机器学习的网络们

机器学习的网络们

  • [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 残差网络

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

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




相关推荐
好奇龙猫5 分钟前
【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
人工智能·算法
沉下心来学鲁班19 分钟前
复现LLM:带你从零认识语言模型
人工智能·语言模型
数据猎手小k19 分钟前
AndroidLab:一个系统化的Android代理框架,包含操作环境和可复现的基准测试,支持大型语言模型和多模态模型。
android·人工智能·机器学习·语言模型
YRr YRr28 分钟前
深度学习:循环神经网络(RNN)详解
人工智能·rnn·深度学习
sp_fyf_202440 分钟前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
多吃轻食1 小时前
大模型微调技术 --> 脉络
人工智能·深度学习·神经网络·自然语言处理·embedding
小松学前端1 小时前
第六章 7.0 LinkList
java·开发语言·网络
城南vision1 小时前
计算机网络——TCP篇
网络·tcp/ip·计算机网络
北京搜维尔科技有限公司1 小时前
搜维尔科技:【应用】Xsens在荷兰车辆管理局人体工程学评估中的应用
人工智能·安全
说私域1 小时前
基于开源 AI 智能名片 S2B2C 商城小程序的视频号交易小程序优化研究
人工智能·小程序·零售