和机器学习类似,深度学习也有三个步骤。

1.神经网络
深度学习中的function set即神经网络模型,神经网络中的神经元有不同的激活函数,权重和偏差,不同神经元的连接方式我们也可以自行设置。

全连接前馈神经网络
全连接只相邻两层神经元完全连接,同时输入信号单向向前传播,后向layer不会向前向layer反馈(feedback)。

- 输入层(Input Layer):1层
- 隐藏层(Hidden Layer):N层
- 输出层(Output Layer):1层
本质:通过隐藏层进行特征转换
把隐藏层通过特征提取来替代原来的特征工程,这样在最后一个隐藏层输出的就是一组新的特征(相当于黑箱操作)而对于输出层,其实是把前面的隐藏层的输出当做输入(经过特征提取得到的一组最好的特征)然后通过一个多分类器得到最后的输出y。
- 示例:手写数字识别
举一个手写数字体识别的例子: 输入:一个16*16=256维的向量,每个pixel对应一个dimension,有颜色用(ink)用1表示,没有颜色(no ink)用0表示 输出:10个维度,每个维度代表一个数字的置信度。
![]()
2.模型评估


对于损失,我们不单单要计算一笔数据的,而是要计算整体所有训练数据的损失,然后把所有的训练数据的损失都加起来,得到一个总体损失L。接下来就是在function set里面找到一组函数能最小化这个总体损失L,或者是找一组神经网络的参数\(\theta\),来最小化总体损失L。
3.使用梯度下降选择最优函数
具体流程:\(\theta\)是一组包含权重和偏差的参数集合,随机找一个初试值,接下来计算一下每个参数对应偏微分,得到的一个偏微分的集合\(\nabla{L}\)就是梯度,有了这些偏微分,我们就可以不断更新梯度得到新的参数,这样不断反复进行,就能得到一组最好的参数使得损失函数的值最小。
一些问题

对于任何一个连续的函数,都可以用足够多的隐藏层来表示。那为什么我们还需要‘深度’学习呢,直接用一层网络表示不就可以了?这是因为使用deep neural network来fit function相比浅层网络来说需要少得多的parameters,所以深层网络更有计算效率。

浙公网安备 33010602011771号