第二天(神经网络基础一)
需要掌握及应用
- 掌握
* 知道逻辑回归的算法计算输出、损失函数
* 知道导数的计算图
* 知道逻辑回归的梯度下降算法
* 知道多样本的血量计算
- 应用
* 应用完成向量化运算
* 应用完成一个单神经元神经网络的结构
1.1 Logistic 回归
- 逻辑回归是一个主要用于二分分类类的算法。那么逻辑回归是给定一个x,输出一个该样本属于1对应类预测概率y = P(y = 1|x) (给定x,y=1的等概率假设Probability)
Logistic 回归中使用的参数如下:
- 输入的特征向量:x ∈ Rnx,x是一个nx维的特征向量,用于训练的标签:y ∈ 0,1
- 参数:权重: ω ∈ Rnx,偏置:b ∈ R
- 输出预测结果: y ^= σ( ωTx+b) = σ( ω1x1+ ω2x2 + … + b) = σ(θTx) (y^表示预测概率值,y为目标值0或者1,T:转置,可以将矩阵n行一列转置成一行n列,σ:用来描述任一过程参数的平均值的分布或离散程度,这个公式最重要)
- sigmoid 函数 s = σ( ωTx+b) = σ(z) = 1/1+e-z
- 如果z的结果非常大,那么s的结果趋近于1
- 如果z的结果非常小,那么s的结果趋近于0
- 输出y^ =P(y=1|x) 的结果。
逻辑回归损失函数
不使用平方差损失(因为这种损失有多个局部最小点,导致优化过程中很难找到损失最小的点)
逻辑回归一般使用L(y^,y) = -(ylogy^) - (1-y)log(1-y^))
目标值为1:损失为-log(y^) , 想要损失越小,y^趋近于1
目标值为0:损失为-log(1-y^) ,想要损失越小,y^ 趋近于0
损失函数是在单个训练样本中定义的,它衡量了在单个训练样本上的表芯。代价函数衡量的是在全体m训练样本上的表现,即衡量参数 ω 和b 的效果,所有m训练样本的损失平均值J( ω,b) = 1/m∑mi=1L(y^(i),y(i))
梯度下降方法
- 目的:使损失函数的值找到最小值
- 方式:梯度下降
- 函数的梯度指出了函数的最陡增长方向。梯度的方向走,函数增长的就越快。那么按梯度的负方向走,函数值自然就降低的最快了。模型的训练目标即是寻找合适的ω 与b 以最小化代价函数值。
- 梯度下降算法
- 按照梯度下降方向进行优化损失直到最小
- ω更新算法:ω: = ω - a *dJ(ω,b)/dω
- b更新算法:b: = b - a *dJ(ω,b)/db
导数
导数可以理解成在某一点处的斜率。
- 各点的导数值一样时,f(a) = 4a的导数可以记作df(a)/da
- 当增加自变量一个不可估计的小的值,应变量增加的相对于自变量的倍数。
导数计算图与链式法则
假设J(a,b,c) = 3(a +bc)
(从前往后的计算过程,从后往前的导数过程,梯度计算导数,链式法则,说明导数是连续传播的)
逻辑回归的梯度下降
逻辑回归的梯度下降过程计算图,首先从前往后的计算图得出如下:
z = ωTx+b
y^ = a = σ(z)
L(y^,y) = -(yloga) - (1-y)log(1-a))
那么计算图从前向后的过程为,假设样本有两个特征
一个样本:w = (w1,w2) x = (x1,x2)
计算出J关于z的导数
所以我们这样可以求出总损失相对于w1,w2,b参数的某一点导数。
参数的导数如下:
计算出来之后,更新w1,w2,b的值
逻辑回归的梯度下降
根据梯度下降公式,按照得出来的梯度来更新,如下: