Lose Function
在 neural-network 中,我们介绍了神经网络的训练与预测:在明确了神经网络的模型后,我们就可以通过定义合理的损失函数,模型根据反向传播算法和随机梯度下降算法,自动地修正网络模型的参数($W$ 和 $b$ ),并对训练数据的特征进行学习。
但是,这里似乎还有很多问题没有解决:
- 神经网络应该有多少层
- 每一层应该有多少隐藏单元
- 学习速率应该是多少
- 各层应该采用哪些激活函数
- 应该选用哪种损失函数
- 梯度下降算法的参数应该如何选择
- ……
所有的这些超参数不可能在一开始就预测出来,实际上通常的情况是,首先有个初步想法,比如构建一个含有特定层数、隐藏单元等等的神经网络,然后在运行和测试中得到该神经网络的运行结果,并不断迭代更新自己的方案。
激活函数
线性函数
线性函数是最基本的激活函数,其因变量与自变量有直接的比例关系,因此线性变换类似于线性回归。
$$ f(x) = ax + b $$
|
|
Sigmoid 函数
Sigmoid 函数是一种在不删除数据的情况下,减少数据的极值或异常值的函数。
$$ s(x) = \frac{1}{1 + e^{-ax}} $$
|
|
双曲正切函数
双曲正切函数 tanh 与 sigmoid 函数蕾丝,不同的是,tanh 的归一范围是 -1 到 1,而不是 0 到 1,因此 tanh 的优点是可以更容易地处理附属。
$$ tanh(x) = \frac{sinh(x)}{cosh(x)} = \frac{e^x - e^{-x}}{e^x + e^{-x}} $$
|
|
ReLU 函数
ReLU 函数满足仿生学中的稀疏性,只有当输入值高于一定数目时才激活该神经元节点。当输入值低于0时进行限制,当输入值上升到某一阈值以上时,函数中的自变量与因变量成线性关系。
|
|
Softmax 函数
Softmax 函数的本质是将一个 K 维的任意实数向量,映射成另一个 K 维的实数向量,其中向量中的每一个元素取值都介于(0,1)范围内。
$$ softmax(x_j) = \frac{e^{x_j}}{\sum_{k=1}^K e^{x_k}} j \in [1, K] $$
|
|
激活函数的选择
损失函数
在神经网络中,损失函数用来评价网络模型输出的预测值 $\hat{\vec{Y}} = f(\vec{X})$ 与真实值 $\vec{Y}$ 之间的差异。这里使用 $L(\vec{Y}, \hat{\vec{Y}})$ 来表示损失函数,它是一个非负值函数。损失值越小,网络模型的性能就越好,所以优化算法目的就是让损失函数尽可能的小。
损失函数的定义
假设网络模型中有 N 个样本,样本的输入和输出向量为 $(\vec{X}, \vec{Y}) = (x_i, y_i), i \in [1, N]$ ,那么总损失函数 $L(\vec{Y}, \hat{\vec{Y}})$ 为每一个输出预测值与真实值的误差之和。
$$ L(\vec{Y}, \hat{\vec{Y}}) = \sum_{i=0}^N l(y, \hat{y_i}) $$
值得注意的是,机器学习问题主要分为回归和分类问题,对分类模型和回归模型进行评估时会使用不同的损失函数,下面将分别对回归模型和分类模型的损失函数进行介绍。
回归损失函数
均方误差损失函数,MSE
平均绝对误差损失函数,MAE
均方误差对数损失函数,MSLE
分类损失函数
Logistic 损失函数
负对数似然损失函数
交叉熵损失函数
Hinge损失函数
指数损失函数
常用的损失函数
超参数
学习率
动量
数据集准备
数据集扩展
数据预处理
Zero Centralization
Normalization
Principal Component Analysis, PCA
Whitening
网络初始化
网络过度拟合
正则化方法
正则化的最大作用是防止过度拟合,提高网络模型的泛化能力,具体实现方法是在损失函数中增加惩罚因子。
L2正则化
L1正则化
最大约束范式
Dropout 层
-
No backlinks found.