机器学习的网络们

机器学习的网络们

  • [1. 线性神经网络](#1. 线性神经网络)
    • [1.1 线性回归](#1.1 线性回归)
    • [1.2 softmax 回归](#1.2 softmax 回归)
  • [2. 多层感知机](#2. 多层感知机)
  • [3. 卷积神经网络](#3. 卷积神经网络)
  • [4. 现代神经网络](#4. 现代神经网络)
    • [4.1 深度卷积神经网络(AlexNet 2012)](#4.1 深度卷积神经网络(AlexNet 2012))
    • [4.2 使用块网络(VGG 2014)](#4.2 使用块网络(VGG 2014))
    • [4.3 网络中的网络(NIN)](#4.3 网络中的网络(NIN))
    • [4.4 GoogleLeNet 2014](#4.4 GoogleLeNet 2014)
    • 排名
    • [4.5 ResNet 残差网络](#4.5 ResNet 残差网络)

申明:资料大部分来源于d2l,如有错误还望指正

1. 线性神经网络

1.1 线性回归

线性网络,对应的就是基础的线性函数

网络结构大概如下所示,输出的内容则主要是0,1两个数字,

实现代码

python 复制代码
def linreg(X, w, b):  #@save
    """线性回归模型"""
    return torch.matmul(X, w) + b

1.2 softmax 回归

从线性回归到了多分类回归,可以输出多个结果

表达式

实现的代码

python 复制代码
def softmax(X):
    X_exp = torch.exp(X)
    partition = X_exp.sum(1, keepdim=True)
    return X_exp / partition  # 这里应用了广播机制

2. 多层感知机

类似下图这样的两个颜色的点就无法成功拟合出来

2.1 多层感知机

单分类

此处引入激活函数

通过激活函数引入非线性的特性,从而更加方便的提升复杂度,拟合曲线

多分类

增加softmax函数从而增加多分类的可能性

多隐藏层

3. 卷积神经网络

3.1 卷积核

在处理图片的任务的时候,全连接会带来参数过多的问题,通过卷积的方式去解决。

个人理解:全连接是将二维数据一维化之后,再处理。在维度变化的时候,也去除了很多二维本身带来的关联信息,所以在处理数据时候,还是需要用二维的方式来处理,也就引出了大名鼎鼎的卷积层。

下面这个图是图像处理中常用的一些卷积矩阵,,这些矩阵可以实现对图像的特征提取

多输入输出通道

多输入

多输出


多输出在图生图的时候会有较大的作用

3.2 池化层

基于像素的卷积会对特定的位置敏感,所以需要一个对位置不那么敏感的方法。所以就选出了池化层。

所谓最大池化就是在一个矩阵中去选个最大值,放入下个矩阵中去,它最大的特点是将之前卷积层的矩阵乘法简化成了求最大值,简化了数十倍的计算量

常见的池化方法有最大池化,和平均池化

整个神经网络,似乎就是不断的增加复杂度,然后寻找一些降低复杂度的方法。再增加复杂度,再寻找降低复杂度的方法,不断的循环。

3.3 卷积神经网络(LeNet 1998)


我们对原始模型做了一点小改动,去掉了最后一层的高斯激活。除此之外,这个网络与最初的LeNet-5一致

python 复制代码
import torch
from torch import nn
from d2l import torch as d2l

net = nn.Sequential(
    nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.Sigmoid(),
    nn.AvgPool2d(kernel_size=2, stride=2),
    nn.Conv2d(6, 16, kernel_size=5), nn.Sigmoid(),
    nn.AvgPool2d(kernel_size=2, stride=2),
    nn.Flatten(),
    nn.Linear(16 * 5 * 5, 120), nn.Sigmoid(),
    nn.Linear(120, 84), nn.Sigmoid(),
    nn.Linear(84, 10))

4. 现代神经网络

4.1 深度卷积神经网络(AlexNet 2012)

图7.1.2 从LeNet(左)到AlexNet(右)


一些细节

1.激活函数 sigmoid 到 ReLu 减缓了梯度消失

  1. 隐藏全连接层后增加了丢弃层

  2. 数据增强

  3. 最大池化层

  4. 模型并行:将模型分成多个快,每个GPU计算一部分结果。

第一点的改变,可以类比成模拟信号,降低了放大倍数,减小了削顶失真和削底失真,使得模拟量有了更多的输出,而不是直接输出0,1两个数值。由此可见使用模拟的方式来实现计算,是否能够大大加强计算速度?或者太多的失真值后,可以给个错误信号,从而重新计算。

第二点,增加丢弃层后会有改善,证明有部分网络,负优化了参数。而准确的找到负优化的点,或者拆分模型分别计算,再混合结果,兴许有更好的概率,但会增加计算复杂度。

4.2 使用块网络(VGG 2014)

VGG 将单个的层,封装成了特定的网络块。然后再加几层全连接层输出。

4.3 网络中的网络(NIN)

NIN 算是比较特殊的VGG快?

卷积之后加了两个全连接层,

双全连接层在alexnet 中已经验证过,会比价有作用。

总结:

NIN 快使用卷积层,加两个1*1 卷积层,卷积层添加了非线性

NIN 使用全局平均池化层来代替VGG和AlexNet中的全连接层----不容易过拟合,更少的参数个数

4.4 GoogleLeNet 2014

在2014年的ImageNet竞赛中夺得了冠军,在随后的两年中一直在改进,形成了Inception V2、Inception V3、Inception V4等版本。

这是单独的一个网络块,使用了多通道去抽取特征,然后将结果合并,也验证了多通道能提升识别准确程度的佐证。


后续的变种




排名

4.5 ResNet 残差网络

现在遇到的问题是,增加了更多的网络,反而没有能训练出性能更好的网络,所以引入了残差块的概念

所谓残差块,也许可以理解为反馈电路中的正反馈,通过反馈来实现提升精度。现在负反馈尚未出现,所以也许可以试试负反馈的方式,也许能有意想不到的性能。




相关推荐
虹科网络安全16 小时前
解读CRA横向标准EN 40000系列:从法规文本到工程落地 | CRA合规之路(七)
网络·安全·web安全
huainingning17 小时前
华三防火墙web界面ipsec配置
网络
奔跑中的小象19 小时前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南19 小时前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang19 小时前
LangGraph 状态机实战
人工智能
刹那芳华199219 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作19 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门19 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜19 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟19 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能