机器学习-感知机-神经网络-激活函数-正反向传播-梯度消失-dropout
文章目录
- 感知机
- 工作流程
- 神经网络
- 区别
- 各种各样的神经网络
- 激活函数
- 激活函数类型
- Sigmoid 函数
- ReLU函数
- Leaky ReLU 函数
- Tanh 函数
- 正向传播
- 反向传播
- 梯度消失(gradient vanish)
- 如何解决
- Dropout
- 使用
- PyTorch实战神经网络算法(手写MNIST数字识别)
- view
- softmax和log-softmax
- cross-entropy loss
- nll_loss
- batch size底层运算机制
感知机
感知机是神经网络的起点
工作流程
在感知机模型中,step function起到了一个 分类决策 的作用。
学习调整权重
神经网络
区别
无需自己选择特征,传统感知机人工手动提取选择特征,深度学习特征提取的过程是自动完成的。只需要输入各种数据即可
提取特征可以通过最后输出层的前一层隐藏层的输出特征可以看出来,与一开始的输入层的特征不一样
可以用作多分类
或者目标检测
各种各样的神经网络
DNN 深度神经网络(ANN 人工神经网络 /MLP 多层感知机)、CNN、RNN
激活函数
激活函数是一种非线性函数,它可以把输入的数据映射到一个新的输出值,这个输出值可以在下一层被用作输入。
激活函数类型
Sigmoid 函数
ReLU函数
Leaky ReLU 函数
Tanh 函数
虽然两者都是非线性的,但 Tanh 函数在输入接近零时提供了更强烈的非线性映射,这是因为其曲线在这个区域内更为陡峭。这使得它能够在某些任务中捕捉到更复杂的模式。
正向传播
反向传播
负责多少就是对损失值影响多少,就是梯度
梯度消失(gradient vanish)
如何解决
Sigmoid函数导函数区间在0到0.25之间,Tanh函数导函数区间在0到1之间,它们输出的数值一直很小。
Dropout
消除特征间的依赖关系:不依赖其他特征通过一部分学习的特征就能判断
使用
深度学习框架中会封装有 Dropout 层,这样需要将哪一层输出随机的丢弃一些,那么就在哪一层后面跟 Dropout 层即可。
自行实现如下
p = 0.5 # 激活的概率。p越高,Dropout 越少。
def train_step(X):
""" X 是输入数据 """
# 第 1 层的前向传播
H1 = np.maximum(0, np.dot(W1, X) + b1) # ReLU 激活
U1 = np.random.rand(*H1.shape) < p # 随机生成 Dropout mask
H1 *= U1 # 应用 Dropout,丢弃一些神经元
# 第 2 层的前向传播
H2 = np.maximum(0, np.dot(W2, H1) + b2) # ReLU 激活
U2 = np.random.rand(*H2.shape) < p # 随机生成 Dropout mask
H2 *= U2 # 应用 Dropout,丢弃一些神经元
# 输出层
out = np.dot(W3, H2) + b3 # 不对输出层应用 Dropout
return out
PyTorch实战神经网络算法(手写MNIST数字识别)
https://pytorch.org/
inputs.view(-1, 28*28)
view
softmax和log-softmax
cross-entropy loss
nll_loss
batch size底层运算机制
https://blog.csdn.net/weixin_44986037/article/details/144216069