标签归档:梯度下降法

反向传播算法—从四个基本公式说起

enter image description here
enter image description here

反向传播四公式:

enter image description here
enter image description here

  反向传播的最终目的是求得使代价C最小时w、b的最佳值,为了方便计算引入了神经单元误差δ_j^l,其定义为误差C关于某个神经单元z的关系;
enter image description here
  其定义如上所示,某神经元误差为代价C(总误差)关于z的偏导数,其中l为神经网络的层数,j为第几个神经元;
  这里的代价函数(损失函数)使用的是平方误差,因此C等于:
enter image description here

BP1

  此公式用于求神经网络最后一层神经元的误差,下面通过BP1公式用于求最后一层神经元(输出层)中第一个神经元的误差;
enter image description here

根据链式法则由此可得到上诉四个公式中得前面BP1

enter image description here
BP1中得L为神经网络得最后一层,而在我们此网络中最后一层为3,所以此处L=3;

BP2

  BP2与BP1类似,不同得是BP1用于求最后一层神经元误差,而BP2则是用于求L层前面某一层得神经元误差,下面通过BP2公式用于求第二层神经元中的第一个神经元的误差;
同样我们也可通过链式法则得出:
enter image description here
有:
enter image description here
因此可以得:
enter image description here
将公式转换为矩阵模式,第2层神经元得误差为:
enter image description here
我们将BP1与BP2带入即可得到BP3与BP4;
通过BP1与BP2公式即可通过BP3、BP4轻松得到w与B;

BP3

此公式用于求误差C关于某个权重的偏导数,在求得BP2后此处只需吧BP2带入到公式即可求得BP3;
enter image description here

BP4

  求误差C关于偏置b的偏导数,BP4与BP3一样得到BP2即可带入得出BP4;
enter image description here
  反向传播算法给出了一种用于计算代价函数(损失函数)梯度得方法,具体步骤如下:
enter image description here

数据计算

enter image description here

一、前向传播

1、计算第二层
  矩阵形式:
enter image description here
enter image description here
2、计算第三层
  矩阵形式:
enter image description here

二、计算误差

当前使用的为平方损失函数(代价函数);
enter image description here

三、计算输出层神经元误差

矩阵形式:
enter image description here
  输出层第一个神经元误差δ_1^3:
enter image description here
  输出层第一个神经元误差δ_2^3:
enter image description here

四、计算其余层神经元误差

矩阵形式:
enter image description here

五、计算误差C关于w、b的梯度

  此处用的是BP3与BP4公式,在计算出BP1与BP2后将其带入到公式中即可计算出C关于w、b的梯度;
矩阵形式:
enter image description here
矩阵形式:
enter image description here
更新w、b公式:
enter image description here
  在计算出误差C关于每个权重每个偏置的偏导数后再使用得到的值带入上述公式更新每一个w、b即可,在更新完成w、b后如误差达到指定精度或epochs则继续执行上述的2-5步骤直到误差满意或指定epochs为止;

逻辑回归

  前面几篇文章介绍了线性回归算法,他们都属于线性模型现在这篇说的是逻辑回归,虽然都有回归二字却是非线性模型;逻辑回归的输出为特定离散值,用于判定数据的分类所以 逻辑回归(Logistic regression) 也称为分类模型;分类模型又有二分与多分类,逻辑回归通常用于二分类;以下内容为Standard机器学习课程的总结记录;
逻辑回归的应用场景有:

  1、是否为垃圾邮件
  2、是否患病
  3、是否金融诈骗
  4、是否为虚假账号

  除了上述这些场景外还有很多类似的预测、判别场景;

与前面讲的线性回归算法类似,编写逻辑回归的步骤为:

  1、编写预测函数
  2、编写损失函数
  3、求得使损失函数最小的回归参数w

预测函数

  预测函数其实就是模型,逻辑回归利用了Sigmoid函数来输出0-1范围的连续值,所以逻辑函数又称为S函数:
S函数公式如下:

    enter image description here       
公式输出为以下S型的图形,所以Sigmoid称为S函数:

    enter image description here

和线性回归一样逻辑回归模型也一样有参数与特征这里用x表示为特征、w为参数,所以逻辑回归模型为:

enter image description here

  模型的输出为连续值,但是我们的想要的分类结果却是离散的所以需要把值映射为0、1;通过上面S函数的图形我们可以看出当x>=0时h(x)>=0.5,x<0时h(x)<0.5,通常情况下当h(x)>=0.5时我们把模型输出分为1分类,h(x)<0.5时为0分类; 从这里可以看出y=0 + Y=1的概率为1,所以有:

enter image description here

损失函数

  线性回归中有讲过损失函数是用于求得预测值与实际值差距的函数,逻辑回归也一样使用损失函数求得预测值与实际值的最小值此时的预测函数参数为模型的最佳参数;
  与线性回归中有区别的是,在线性回归模型中我们使用的是平方损失函数,而这里我们将使用对数损失函数;

enter image description here

  假设样本符合伯努利分布然后通过概率形式表示,通过最大似然估计推导得出的;由于这里说的是二元分类所以逻辑回归的损失函数为:

enter image description here

求得损失函数的最小值

  通过前面所讲的梯度下降法可以求出上面所说的损失函数最小值; 求L(w)最小值:

enter image description here

求关于w的偏导数可以得出:

enter image description here

设α为步长,n为w向量大小,m为数据集大小,求w最小值的迭代过程为:

enter image description here

参考资料:
https://en.wikipedia.org/wiki/Logistic_function
Standard机器学习