深度学习笔记(数学基础)
神经网络基本原理
得分函数
$
f(x;W)=Wx=\begin{pmatrix}W_{1}&W_{2}&… &W_{n}\\\end{pmatrix}\begin{pmatrix}x_{1}\\x_{2}\\ … \\x_{n}\end{pmatrix}=\sum^{n}_{i=1}{W_{i}x_{i}}
$
$
f(x;W)=Wx=\begin{pmatrix}W_{11}&W_{12}&… &W_{1n}\\W_{21}&W_{22}&… &W_{2n}\end{pmatrix}\begin{pmatrix}x_{1}\\x_{2}\\ … \\x_{n}\end{pmatrix}=\begin{pmatrix}Y_{1}\\Y_{2}\end{pmatrix}
$
结果的行数表示类别数,x向量表示训练数据,W为权重参数
线性函数:$f(x;W)=Wx+b(偏置参数矩阵)$
如何根据$\begin{pmatrix}Y_{1}\\Y_{2}\\ … \\Y_{m}\end{pmatrix}$求得对应类别的概率?归一化
$P(Y=k|X=x_{i})=\frac{e^{s_{k}}}{\sum_{j}{e^{s_{j}}}}$
总结:先求指数,再求所占分数
损失函数
例如,$L_{i}=\sum_{j\neq y_{i}}{max(0,s_{j}-s_{y_{i}} + 1)}$,其中$y_{i}$为正确类别
$L=\frac{1}{N}\sum_{i=1}^{n}\sum_{j\neq y_{i}}max(0,f(x_{i};W)_{j}-f(x_{i};W)_{y_{i}} + 1)+\lambda R(N)$
其中$R(N)$为正则化惩罚项,$\lambda$增大,会降低过拟合的风险
$R(N)=\sum_{k}\sum_{l}W_{k,l}^{2}$
训练目标:使损失函数L减小
例如,$e=\frac{1}{2}(y-\hat{y})^2$,多样本$E=e^{(1)}+e^{(2)}+…+e^{(n)}=\frac{1}{2}\sum_{i=1}^{n}(y^{(i)}-\hat{y}^{(i)})^2$
其中$\hat{y}^{(i)}=\phi(z^{(i)})=Wx^{(i)}$,$\phi(x)$是线性激活函数
$E=\frac{1}{2}\sum_{i=1}^{n}(y^{(i)}-\hat{y}^{(i)})^2=\frac{1}{2}\sum_{i=1}^{n}(y^{(i)}-Wx^{(i)})^2$
目标:训练合适的W,使差值E取最小值
激活函数(阈值)
- Sigmoid函数:$f(z)=\frac{1}{1+e^{-z}}$(缺点:计算时间长)
- ReLu函数:$ReLu(x) = max(0,x)$(优点:计算速度快)
梯度下降
设$W=\begin{pmatrix}
w_{1}&w_{2}&… &w_{n}\\
\end{pmatrix}$更新权重$w:=w+\Delta w$
$\Delta w=-\eta \nabla J(w)$,其中$\eta$为学习率,表示学习速度(要适中)
多层神经网络
- 整体架构:输入层-隐藏层(可以包含多层)-输出层
- 大于一层的就被称为深度神经网络,层次越多数据处理能力越强
- 每个连接都有一个权值w
- 在Hidden Layer增加神经元的数量以获取更多特征
多层神经网络的训练过程
- 从输入层开始,将数据经过神经网络传输到输出层,这一步是前向传播。
- 根据输出,计算误差(预测结果和已知结果之间的差异),得到代价函数。利用梯度下降法最小化误差。
- 梯度下降法需要计算每个权重的梯度,使用反向传播算法计算梯度,根据梯度调整权重值。
重复以上3个步骤训练权重参数W。
反向传播:通过链式求导法则求代价函数对各层参数W的偏导数
卷积神经网络
整体架构:卷积层→Relu层→池化层→连接各层→全连接层
卷积计算
卷积结果大小计算公式:
$H_{2}=\frac{H_{1}-F_{H}+2P}{S(步长)}+1$,P为边界填充的圈数
$W_{2}=\frac{W_{1}-F_{W}+2P}{S(步长)}+1$
池化层
MAXPOOLING:池化层的目的是压缩
以K*K大小分块,每次取块中最大的元素
$\begin{pmatrix}1&3&2&9\\7&4&1&5&\\8&5&2&3\\4&2&1&4\end{pmatrix}→\begin{pmatrix}7&9\\8&4 \end{pmatrix}$