深度学习进阶课程02---神经网络基本结构及梯度下降算法

这篇文章继续介绍神经网络基本结构及其中最重要的一个算法,梯度下降算法

1.神经网络结构:

深度学习进阶课程02---神经网络基本结构及梯度下降算法_第1张图片
以上是神经网络的基本结构,分别是输入层,隐藏层,输出层
从输入层开始,每个神经元输入值*权重,求和后到隐藏层,再经过非线性转换等一系列变化,最终得到输出值。
深度学习进阶课程02---神经网络基本结构及梯度下降算法_第2张图片
以上是深度学习中神经网络结构,模型更加复杂,往往有更多的hidden layers
上图中不算输入层的话,是两个隐藏层,一个输出层,是三层的神经网络

MultiLayer Perceptions(MLP)(多层神经网络结构),它的function其实是sigmoid function,不是perceptrons,
假设识别一个手写图片:
深度学习进阶课程02---神经网络基本结构及梯度下降算法_第3张图片
肉眼很简单的可以看出是数字9,但是计算机中如何识别呢,先来看一些图像的基本知识:
如果图片是6464,输入层总共有6464=4096个神经元
如果图片是2828,输入层总共有2828=784个神经元
也就是说,每个像素点都对应一个神经元

如果输出层只有一个神经元,输出值>0.5,则认为数字是9,如果<0.5,则认为数字不是9

再来简单介绍一下FeedForward Network,这类网络中没有循环,信息单向传递,也就是我们常见的神经网络
来看一下具体的例子:
用神经网络识别手写数字:
深度学习进阶课程02---神经网络基本结构及梯度下降算法_第4张图片

对于计算机来讲,首先要做segmentation(分层),因为计算机并不知道哪一片是哪些数字,所以要首先进行分层:
在这里插入图片描述

分层后如何识别第一个数字:
深度学习进阶课程02---神经网络基本结构及梯度下降算法_第5张图片
用神经网络识别:
建立一个简单的两层神经网络:
深度学习进阶课程02---神经网络基本结构及梯度下降算法_第6张图片
输入层:28*28=784个神经元
每个神经元代表一个像素的值:0表示全白,1表示全黑
隐藏层:隐藏层建立多少个神经元不是固定的,可以根据先验知识来建立,这里我们暂时建立15个神经元
输出层:输出层我们要把以上数字分类,0-9共十个数字,所以我们设置输出层神经元个数为10
例如:第一个神经元(代表0)的输出值为1,其他的小于1,数字被识别为0
隐藏层学习到不同的部分:
深度学习进阶课程02---神经网络基本结构及梯度下降算法_第7张图片深度学习进阶课程02---神经网络基本结构及梯度下降算法_第8张图片

隐藏层不同的神经元可以学习到不同的部分,最终将以上部分组合起来,决定为:
深度学习进阶课程02---神经网络基本结构及梯度下降算法_第9张图片
还有很多其他方式做出分类决定,所以使用10个神经元在输出层
下面来看一下梯度下降算法

2.梯度下降(gradient descent):

数据集网站:MINIST dataset
MINIST全名:Modified National Institute of Standards and Technology
训练数据集:60000张图片=>用来训练
测试数据集:10000张图片=>用来测试

这个数据集是扫描250个员工的手写字体而来

x:训练输入,2828=784d向量,纬度1784,每个值代表一个灰度图片中的一个像素值
y:y=y(x):10d向量

如果输入的某个图片的数字是6,理想输出:y(x)=(0,0,0,0,0,0,1,0,0,0)T
我们的目的是找到最优w和b参数值,建立最佳网络,来建立一下目标函数
Cost function(loss function,objective function):目标函数
在这里插入图片描述

C:cost;
w:weight,权重
b:bias,偏向
n:训练数据集实例个数
x:输入值
a:输出值(当x是输入时)
||v||:向量的length function

C(w,b)越小越好,说明输出的预测值与真实值差别越小
目标:最小化C(w,b),最小化问题可以用梯度下降解决(gradient descent)
C(w,b)由两个参数变量,w和b,假设为一个方程C(V),V有两个变量v1和v2,可以画出它的图像,是一个三维的曲面,我们需要找到曲面上的最低点,使C最小
深度学习进阶课程02---神经网络基本结构及梯度下降算法_第10张图片
对于变量较少的时候,通常可以用微积分解决,如果v包含的变量过多,则无法用微积分解决
那么什么是gradient descent呢?
假设一个小球在曲面上的某一点,滚动到最低点
一个变量的情况:
深度学习进阶课程02---神经网络基本结构及梯度下降算法_第11张图片
假设初始点在最右边,我们需要找到一个点使曲线最小,梯度下降算法是通过求曲线的斜率,即斜率,让x=x-导数,x不断地更新,慢慢找到最低点

现在情况稍微复杂一些,有两个变量:
深度学习进阶课程02---神经网络基本结构及梯度下降算法_第12张图片
假设初始点是平面上任意一点,我们想要找到最低点,对两个变量分别求导数,减去导数,同时乘以一个学习率,一点点更新,
但是有可能陷入局部最优解,不是全局最优,前提是目标函数是凸函数 convex,learning rate自动会减小

深度学习进阶课程02---神经网络基本结构及梯度下降算法_第13张图片
C:目标函数,目标函数对w和b分别求偏导,并乘以学习率

就到这里吧,一些基本概念,下篇文章继续写

你可能感兴趣的:(深度学习进阶课程,神经网络,算法,机器学习,人工智能,深度学习)