深度学习笔记(一)感知器、梯度下降、反向传播
本文是在学习优达学城深度学习课程第一部分后做的笔记,只供查阅使用,具体公式推导与代码实践在文中给了参考资料的链接。
深度学习
神经网络是一种机器学习算法,模型如下。
神经网络神经网络由输入层、隐藏层、输出层组成,当隐藏层的层数大于等于2时,叫做深层神经网络,使用深层神经网络算法进行机器学习就叫做深度学习。
感知器 perceptron
神经网络是由神经元组成的,而激活函数为阶跃函数的神经元就是感知器。感知器的模型如下:
perceptron感知器的运作流程是,将输入inputs乘以权重weights,然后相加,再经过激活函数step function,得到一个输出。通过对权重的设置,可以让激活函数代表任意线性函数。具体解释可以看这个非常棒的博客:零基础入门深度学习(1) - 感知器 。
这里,我们只需知道一个感知器可以表示一个函数,但是这好像并没有什么实际作用。对,一个感知器是作用不大,但是,当感知器变成神经网络时情况就完全不同了,它会有非常神奇的效果。目前自然语言处理、图像和语音处理、自动驾驶等领域都广泛使用深度学习,由此可见一斑。
梯度下降 Gradient Decent
要得到有实际作用的感知器,我们必须设置它的参数,如何设置呢?梯度下降可以解决这个问题。
梯度下降整体的逻辑就是,通过已知的输入值x和真实的输出值y,求出感知器最合适的参数w。那么如何定义最合适的参数w?我们认为通过感知器计算得到的输出值pred与真实的数值y最接近的时候,那么参数w的值就最合适。
基于以上,在数学里面,通过求导数的方式,我们可以知道通过让w每次加上delta_w的方式,可以让pred 与 y的值越来越接近。
梯度下降而delta_w等于:
这里具体的数学公式推导可以参考:
吴恩达的机器学习课程
零基础入门深度学习(2) - 线性单元和梯度下降
反向传播 Back Propagation
当上面的梯度下降算法,应用到神经网络时,就叫做反向传播算法。核心点就在于:不断的更新每一层的权重w。
反向传播示例总结一下:
反向传播时,与输出层k连接的参数w_jk的调整值delta_w_jk还是和上面梯度下降中的求法一样。
而输入层i到隐藏层j的w_ij的调整值delta_w_ij的计算公式如下:
这里更多的内容可以参考:
零基础入门深度学习(3) - 神经网络和反向传播算法
Andrej Karpathy:Yes you should understand backprop
代码实现
关于使用代码实现,可以下载我在优达学城第一个项目的作业:我的第一个神经网络里面的First_neural_network.ipynb文件和数据文件。