深度学习是机器学习领域中的一个新的研究方向。所以在学习深度学习之前我们需要了解一下神经网络。
神经网络
神经网络:是由大量的节点(或称“神经元”)和之间相互的联接构成。 每个节点代表一种特定的输出函数,称为激励函数、激活函数(activation function)。 每两个节点间的联接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。
神经网络的本质:
通过参数与激活函数来拟合特征与目标之间的真实函数关系。本质上是矩阵的运算。
神经网络是一种模拟人脑神经元工作方式的数学模型,用于解决各种机器学习问题。它由多个层(layers)组成,每一层包含多个神经元(neurons),这些神经元通过权重(weights)和偏置(biases)连接在一起。
感知器
感知器的定义
由两层神经元组成的神经网络--“感知器”(Perceptron),感知器只能线性划分数据。
感知器的数学表达
感知器的局限性
感知器只能解决线性可分的问题,无法解决非线性问题(如异或问题)。
多层感知器(MLP, Multi-Layer Perceptron)
多层感知器的定义
多层感知器是由多个感知器组成的神经网络,包含输入层、隐藏层和输出层。通过增加隐藏层,MLP能够解决非线性问题。
tip:增加一个中间层,即隐含层,这也是神经网络可以做非线性分类的关键。
多层感知器的结构
-
输入层:接收输入数据。
-
隐藏层:对输入数据进行非线性变换。
-
输出层:输出最终结果。
多层感知器的优势
通过增加隐藏层和神经元数量,MLP可以拟合任意复杂的函数。
偏置
在神经网络中需要默认增加偏置神经元(节点),这些节点是默认存在的。 它本质上是一个只含有存储功能,且存储值永远为1的单元。在神经网络的每个层次中,除了输出层以外,都会含有这样一个偏置单元。
tips:
-
偏置节点没有输入。
-
一般情况下,不会明确画出偏置节点。
偏置的作用
偏置是神经元中的一个参数,用于调整神经元的激活阈值。它允许模型在输入为0时仍然能够输出非零值。
偏置的数学表达
在加权求和公式中,偏置 b是一个常数项:
神经网络的构造
神经网络的基本组件
-
神经元:计算加权和并通过激活函数输出。
-
层(Layer):由多个神经元组成,分为输入层、隐藏层和输出层。
中间层如何确定?
输入层的节点数:与特征的维度匹配 输出层的节点数:与目标的维度匹配。 中间层的节点数:目前业界没有完善的理论来指导这个决策。一般是根据经验来设置。较好的方法就是预先设定几个可选值,通过切换这几个值来看整个模型的预测效果,选择效果最好的值作为最终选择。
-
连接(Connection):神经元之间通过权重连接。
tips: 1、设计一个神经网络时,输入层与输出层的节点数往往是固定的,中间层则可以自由指定; 2、神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别; 3、结构图里的关键不是圆圈(代表“神经元”),而是连接线(代表“神经元”之间的连接)。每个连接线对应一个不同的权重(其值称为权值),这是需要训练得到的。
前向传播(Forward Propagation)
输入数据通过每一层的神经元,最终得到输出结果的过程。
损失函数
损失函数的作用
损失函数用于衡量模型预测值与真实值之间的差距。通过最小化损失函数,模型能够逐步优化。
常见的损失函数
0-1损失函数
0-1损失函数是最简单的分类损失函数,用于衡量分类任务中预测值与真实值是否一致。
均方差损失
均方差损失是回归任务中最常用的损失函数,衡量预测值与真实值之间的平方差。
平均绝对差损失
平均绝对差损失是回归任务中另一种常用的损失函数,衡量预测值与真实值之间的绝对差。
交叉熵损失
交叉熵损失是分类任务中最常用的损失函数,衡量预测概率分布与真实概率分布之间的差异。
神经网络多分类情况下,交叉熵损失函数运算过程如下:
合页损失
合页损失是支持向量机(SVM)中常用的损失函数,用于最大化分类间隔。
总结
损失函数 | 应用场景 | 优点 | 缺点 |
---|---|---|---|
0-1损失函数 | 分类任务 | 简单直观 | 不可导,无法优化 |
均方差损失 | 回归任务 | 可导,易于优化 | 对异常值敏感 |
平均绝对差损失 | 回归任务 | 对异常值不敏感 | 在零点不可导,优化效率低 |
交叉熵损失 | 分类任务 | 适合概率输出,优化效果好 | 对预测概率准确性要求高 |
合页损失 | 二分类任务 | 对分类间隔敏感,适合SVM | 不适合概率输出,对噪声敏感 |
梯度下降
反向传播(BP神经网络)
反向传播的原理
BP(Back-propagation,反向传播)前向传播得到误差,反向传播调整误差,再前向传播,再反向传播一轮一轮得到最优解的。
反向传播是一种高效计算梯度的方法,通过链式法则从输出层到输入层逐层计算损失函数对每个参数的梯度。