《Neural Networks and Deep Learning》第二周学习笔记
这节课复习神经网络编程基本知识,以逻辑回归算法为例,训练数据时不会采用for循环方法
逻辑回归
1. 二进制分类
图片二元分类问题-可爱的小猫,1=猫,0不是猫,首先介绍图片识别的数据格式,图片被分为红、绿和蓝三个通道,假定每个通道的像素点为64*64,将矩阵中的像素值展开为向量
x
x
x作为算法输入,定义一个数据输入格式
一个通道
x
x
x的输入
x
1
.
.
.
x
n
\begin{matrix} x_1\\ ... \\ x_{n}\\ \end{matrix}
x1...xn此时输入向量的维度
n
x
=
64
∗
64
∗
3
=
12288
n_x=64*64*3=12288
nx=64∗64∗3=12288
神经网络的输入格式:
单个样本表示为
(
x
,
y
)
(x,y)
(x,y),
x
∈
R
n
x
,
y
∈
0
,
1
x\in{R^{n_x}},y\in{{0,1}}
x∈Rnx,y∈0,1
m
m
m个训练数据,
n
n
n维,样本可表示为
(
x
(
1
)
,
Y
(
1
)
)
,
(
x
(
2
)
,
Y
(
2
)
)
.
.
.
,
(
x
(
m
)
,
Y
(
m
)
)
(x^{(1)},Y^{(1)}),(x^{(2)},Y^{(2)})...,(x^{(m)},Y^{(m)})
(x(1),Y(1)),(x(2),Y(2))...,(x(m),Y(m))
将x^1放入第一列,同时有
n
x
n_x
nx行
x输入格式为
x
11
.
.
.
x
1
m
.
.
.
.
.
.
.
.
.
x
n
1
.
.
.
x
n
m
\begin{matrix} x_{11} & ... & x_{1m} \\ ... & ... &...\\ x_{n1} & ... & x_{nm} \\ \end{matrix}
x11...xn1.........x1m...xnm
python中输出X.shape=
(
n
x
,
m
)
(n_x,m)
(nx,m) ,Y.shape=
(
1
,
m
)
(1,m)
(1,m)
2. 逻辑回归
模型输出的是输入x对应的类别的概率
线性回归中输出与参数
ω
\omega
ω和
b
b
b有关
y
^
=
ω
T
x
+
b
\hat y=\omega^Tx+b
y^=ωTx+b
为了使概率有意义,对方程使用sigmoid,使其范围在(0,1)内
y
^
=
s
i
g
m
o
i
d
(
ω
T
x
+
b
)
\hat y=sigmoid(\omega^Tx+b)
y^=sigmoid(ωTx+b)
为了方便矩阵表示,部分研究中定义
x
0
=
1
,
y
^
=
θ
T
x
x_0=1,\hat y =\theta^Tx
x0=1,y^=θTx
3. 逻辑回归成本函数
利用损失函数查找参数
这部分介绍了两个概念:
损失函数:针对单个样本而言,描述每个样本预测值与真实值的差距,有多种描述方式:
L
(
y
^
,
y
)
\mathcal{L}(\hat y,y)
L(y^,y)
通常表示为:
L
(
y
^
,
y
)
=
−
(
y
l
o
g
(
a
)
+
(
1
−
y
)
l
o
g
(
1
−
a
)
)
\mathcal{L}(\hat y,y)=-(ylog(a)+(1-y)log(1-a))
L(y^,y)=−(ylog(a)+(1−y)log(1−a))
代价函数 :针对样本集,描述整体预测值与标签的差距,通常取其均值
J
(
ω
,
b
)
=
1
m
∑
i
=
1
m
L
(
y
^
,
y
)
J(\omega,b)={1\over m}\sum_{i=1}^m \mathcal{L}(\hat y,y)
J(ω,b)=m1∑i=1mL(y^,y)
4. 梯度下降
模型更优秀 == 预测值与真实值更接近 == 损失函数更小 == 寻找最优参数
ω
\omega
ω和
b
b
b
梯度下降:利用微分方程计算极值的方法,假设数据为凸数据,通过导数可以确定最佳前进方向,数据每次会如下更新
ω
:
ω
−
α
d
J
(
ω
,
b
)
d
ω
\omega:\omega-\alpha {dJ(\omega,b)\over d\omega}
ω:ω−αdωdJ(ω,b)
b
:
b
−
α
d
J
(
ω
,
b
)
d
b
b:b-\alpha {dJ(\omega,b) \over db}
b:b−αdbdJ(ω,b)
5. 导数
以 y = x y=x y=x函数为例,介绍导数:即 Δ y Δ x {\Delta y\over \Delta x} ΔxΔy,因变量增量与自变量增量的比值
6. 偏微分实例
以 y = x 2 y=x^2 y=x2为例,介绍 x x x不同时,导数不同的函数
7. 计算图
以
J
(
a
,
b
,
c
)
=
3
v
=
3
(
a
+
u
)
=
3
(
a
+
b
c
)
J(a,b,c)=3v=3(a+u)=3(a+bc)
J(a,b,c)=3v=3(a+u)=3(a+bc)为例,直观的展示前向传播和反向传播流程:
前
u
=
b
c
−
>
v
=
a
+
u
−
>
J
=
3
v
u=bc->v=a+u ->J=3v
u=bc−>v=a+u−>J=3v
8. 基于计算图的导数
基于链式法则的反向传播
d
J
d
a
=
d
J
d
v
∗
d
v
d
a
{dJ \over da}={dJ \over dv}*{dv\over da}
dadJ=dvdJ∗dadv
d
J
d
b
=
d
J
d
v
∗
d
v
d
u
∗
d
v
d
b
{dJ \over db}={dJ \over dv}*{dv\over du}*{dv \over db}
dbdJ=dvdJ∗dudv∗dbdv
d
J
d
c
=
d
J
d
v
∗
d
v
d
u
∗
d
v
d
c
{dJ \over dc}={dJ \over dv}*{dv\over du}*{dv \over dc}
dcdJ=dvdJ∗dudv∗dcdv
9. 逻辑回归梯度下降
逻辑回归方程为:
z
=
ω
T
x
+
b
z=\omega^T x+b
z=ωTx+b
y
^
=
a
=
σ
(
z
)
\hat y=a=\sigma(z)
y^=a=σ(z)
L
(
a
,
y
)
=
−
(
y
l
o
g
(
a
)
+
(
1
−
y
)
l
o
g
(
1
−
a
)
)
\mathcal{L}(a,y)=-(ylog(a)+(1-y)log(1-a))
L(a,y)=−(ylog(a)+(1−y)log(1−a))
逻辑回归导数为:
求最小
L
(
a
,
y
)
\mathcal{L}(a,y)
L(a,y),通过链式法则计算最小的
ω
T
、
b
\omega^T 、b
ωT、b
10. 梯度下降实例
针对单个样本,需要双重循环:
for 样本从
1...
m
1...m
1...m:
for所有特征
x
1
、
x
2
x_1、x_2
x1、x2:
z
(
i
)
=
ω
T
x
(
i
)
+
b
z^{(i)} =\omega^Tx^{(i)} +b
z(i)=ωTx(i)+b
a
(
i
)
=
σ
(
z
(
i
)
)
a^{(i)}=\sigma(z^{(i)})
a(i)=σ(z(i))
L
(
a
(
i
)
,
y
(
i
)
)
=
−
(
y
(
i
)
l
o
g
(
a
(
i
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
a
(
i
)
)
)
\mathcal{L}(a^{(i)},y^{(i)})=-(y^{(i)}log(a^{(i)})+(1-y^{(i)})log(1-a^{(i)}))
L(a(i),y(i))=−(y(i)log(a(i))+(1−y(i))log(1−a(i)))
d
z
(
i
)
=
a
(
i
)
−
y
(
i
)
dz^{(i)}=a^{(i)}-y^{(i)}
dz(i)=a(i)−y(i)
d
ω
1
(
i
)
+
=
x
1
(
i
)
d
z
(
i
)
d\omega_1^{(i)}+=x_1^{(i)}dz{(i)}
dω1(i)+=x1(i)dz(i)
d
ω
2
(
i
)
+
=
x
2
(
i
)
d
z
(
i
)
d\omega_2^{(i)}+=x_2^{(i)}dz{(i)}
dω2(i)+=x2(i)dz(i)
d
b
+
=
d
z
(
i
)
db+=dz^{(i)}
db+=dz(i)
问题:大量样本需要大量的计算力,矢量化可以提高效率,减少甚至避免循环时间。