2.1 二分类问题
1. 两个问题
- 实现神经网络如果遍历训练集,不需要用for循环;
- 为什么神经网络的计算过程可以分为前向传播和后向传播;
2. 给出几个符号及含义
- 样本
(x,y),训练样本包括m个;
-
x∈Rnx,表示样本x包含
nx个特征(hight * width * channel);
-
y∈(0,1),目标值属于0,1分类;
- 训练数据:
(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m));
-
X=[x(1),x(2),...,x(m)],X.shape=(nx,m);
-
Y=[y(1),y(2),...,y(m)],Y.shape=(1,m);
2.2 Logistic Regression
-
logisticregression用于二分类问题的监督学习;
- 分类任务中:
Given
x,
want
y
=P(y=1∣x),其中
x∈Rnx,
y∈{0,1},
y
∈[0,1];
- Parameters:
w∈Rnx,
b∈R;
- 计算
y
=wTx+b,引入sigmoid函数限制
y
取值范围:
y
=sigmoid(wTx+b)=σ(wTx+b);
-
σ(z)=1+e−z1 ,
σ′(z)=σ(z)(1−σ(z));
-
sigmoid函数图像:
- 梯度消失问题;
2.3 Logistic Regression cost function
为了训练
logistic回归模型的参数
w以及
b,需要定义一个成本函数。
1. recap
-
y
(i)=σ(wTx(i)+b)
where
σ(z(i))=1+e−z(i)1,
z(i)=wTx(i)+b
-
Given
X={x(1),x(2),...,x(m)},
want
y
(i)≈y(i)
2. loss (error) function
- 一般使用平方误差函数
(squared
error):
L(y
,y)=21(y
−y)2,但在logistic regression里,一般不用平方误差作为loss function,因为平方误差损失函数一般是非凸函数,使用梯度下降时,容易得到局部最优解,而不是全局最优。
-
logisticregression的lossfunction:
L(y
,y)=−(ylogy
+(1−y)log(1−y
))
当
y=1 时,
L(y
,y)=−logy
:
y
→1时,
L(y
,y)≈0,表示预测效果越好;
y
→0时,
L(y
,y)≈∞,表示预测效果越差;
当
y=0 时,
L(y
,y)=−log(1−y
)) :
y
→0时,
L(y
,y)≈0,表示预测效果越好;
y
→1时,
L(y
,y)≈∞,表示预测效果越差;
-
lossfunction是在单个训练样本中定义的,衡量了算法在单个训练样本上的表现。
3. Cost Function
- 衡量参数
w和
b在全体训练样本上的表现,是所有训练样本的
lossfunction之和。
-
J(w,b)=m1∑i=1mL(y
(i),y(i))=−m1∑i=1m[(ylogy
+(1−y)log(1−y
))]
-
CostFunction是关于参数
w,b的函数,我们的目标是迭代计算出最佳的
w和b的值,最小化
CostFunction,使其尽可能趋近于0。
2.4 梯度下降法
使用梯度下降法来训练或学习得到训练集上的参数
w和
b,使
cost
function最小。
-
repeat:{
w=:w−αδwδJ(w,b)
b=:b−αδbδJ(w,b)
}
在程序代码中通常使用
dw来表示
δwδJ(w,b),
db来表示
δbδJ(w,b)。
- 直观看梯度下降:
- 从低维解释梯度下降:
2.5 计算图
一个神经网络的计算都是按照前向或反向传播的过程来计算的。首先计算出神经网络的输出,接着进行反向传输操作(计算对应的梯度或导数)。
- 示例:
2.6 Logistc Regression中的梯度下降
-
Logistic
Regression中的
loss
function表达式:
z=wTx+b
y
=a=σ(z)
L(a,y)=−(y∗log(a)+(1−y)∗log(1−a))
-
反向传播过程:
-
反向传播计算导数:
da=δaδL=−ay+1−a1−y
dz=δzδL=δaδL⋅δzδa=(−ay+1−a1−y)⋅a(1−a)=a−y
dw1=δw1δL=δzδL⋅δw1δz=(a−y)⋅x1
db=δbδL=δzδL⋅δbδz=a−y
-
参数更新:
w1=:w1−αdw1
w2=:w2−αdw2
b=:b−αdb
2.7 m个样本的梯度下降
-
logistic
regression 中
cost
function表达:
z(i)=wTx(i)+b
y
(i)=a(i)=σ(z(i))
J(w,b)=m1∑i=1mL(y
(i),y(i))=−m1∑i=1m[(ylogy
+(1−y)log(1−y
))]
-
全局成本函数实际上是
1 到
m项损失函数和的平均,因此全局成本函数对
w1的导数,同样是各项损失函数对
w1导数和的平均值。即:
dz(i)=a(i)−y(i)
dw1=m1∑i=1mdz(i)⋅x1(i)
dw2=m1∑i=1mdz(i)⋅x2(i)
db=m1∑i=1m(a(i)−y(i))
2.8 向量化
深度学习的算法中,我们通常面临大数据集,程序编写过程中,尽可能减少loop循环语句,使用向量化提高程序运行速度。
-
逻辑回归向量化
输入矩阵
X:(nx,m)
权重矩阵
w:(nx,1)
偏置变量
b:一个常数
输出矩阵
Y:(1,m)
-
单次迭代梯度下降算法流程:
Z = np.dot(w.T,X)+b
A = sigmoid(Z)
dZ = A - Y
dw = 1/m * np.dot(X,dZ.T)
db = 1/m * np.sum(dZ)
w = w - alpha * dw
b = b - alpha * db
2.9 logistic regression cost function 的解释
预测输出
y
=σ(wTx+b),where
σ(z)=1+e−z1,
y
表示预测输出为正类(+1)的概率。
-
loss
function:
y
=P(y=1∣x):当
y=1时,
P(y∣x)=y
;当
y=0时,
P(y∣x)=1−y
。
上述两种情况整合到一起,即
P(y∣x)=y
y(1−y
)1−y。
对上式进行log处理(单调函数不影响原函数的单调性):
logP(y∣x)=log(y
y(1−y
)1−y)=ylogy
+(1−y)(1−y
)
概率
P(y∣x)表示预测的准确性,越大越好。对上式加上负号,转化为单个样本的
loss函数,期望越小越好:
L(y
,y)=−(ylogy
+(1−y)(1−y
))
-
cost
function:
m个训练样本时,假设样本之间独立同分布,则:
P(label
in
labelset)=∏i=1mP(y(i)∣x(i))
⇒logP(...)=∑i=1mP(y(i)∣x(i))=−∑i=1mL(y
,y)
此时
cost
function:(因为
cost求最小,加负号)
J(w,b)=m1∑i=1mL(y
,y)=−m1∑i=1m(ylogy
+(1−y)(1−y
))
参考资料:
[1] Andrew Ng 课程笔记连载:https://zhuanlan.zhihu.com/p/29688927
[2] 网易云课堂 Andrew Ng课程
本周编程作业链接:https://blog.csdn.net/iCode_girl/article/details/86702982
测验链接:https://blog.csdn.net/u013733326/article/details/79865858