当前位置: 首页 > article >正文

机器学习的网络们

机器学习的网络们

  • 1. 线性神经网络
    • 1.1 线性回归
    • 1.2 softmax 回归
  • 2. 多层感知机
    • 2.1 多层感知机
      • 单分类
        • 此处引入激活函数
      • 多分类
      • 多隐藏层
  • 3. 卷积神经网络
    • 3.1 卷积核
      • 多输入输出通道
        • 多输入
        • 多输出
    • 3.2 池化层
    • 3.3 卷积神经网络(LeNet 1998)
  • 4. 现代神经网络
    • 4.1 深度卷积神经网络(AlexNet 2012)
        • 一些细节
    • 4.2 使用块网络(VGG 2014)
    • 4.3 网络中的网络(NIN)
    • 4.4 GoogleLeNet 2014
      • 后续的变种
    • 排名
    • 4.5 ResNet 残差网络

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

1. 线性神经网络

1.1 线性回归

线性网络,对应的就是基础的线性函数
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

网络结构大概如下所示,输出的内容则主要是0,1两个数字,
在这里插入图片描述
实现代码

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

1.2 softmax 回归

从线性回归到了多分类回归,可以输出多个结果
在这里插入图片描述
表达式
在这里插入图片描述
实现的代码

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一致

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(右)
图7.1.2 从LeNet(左)到AlexNet(右)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

一些细节

1.激活函数 sigmoid 到 ReLu 减缓了梯度消失
2. 隐藏全连接层后增加了丢弃层
3. 数据增强
4. 最大池化层
5. 模型并行:将模型分成多个快,每个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 残差网络

现在遇到的问题是,增加了更多的网络,反而没有能训练出性能更好的网络,所以引入了残差块的概念
所谓残差块,也许可以理解为反馈电路中的正反馈,通过反馈来实现提升精度。现在负反馈尚未出现,所以也许可以试试负反馈的方式,也许能有意想不到的性能。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.kler.cn/news/309452.html

相关文章:

  • mysql 8.0 搭建主从集群注意事项
  • 从登录到免登录:JSP与Servlet结合Cookie的基本实现
  • react 组件通讯
  • 面试题篇: 跨域问题如何处理(Java和Nginx处理方式)
  • Linux 使用 tar 命令
  • C++掉血迷宫
  • 在vmvare安装飞牛私有云 fnOS体验教程
  • 自动化测试框架pytest命令参数
  • 如何在@GenericGenerator中显式指定schema
  • 友思特方案 | 搭建红外桥梁:嵌入式视觉接口助力红外热像仪传输
  • SpringBoot入门(黑马)
  • 【数据可视化】Arcgis api 4.x 专题图制作之分级色彩,采用自然间断法(使用simple-statistics JS数学统计库生成自然间断点)
  • 0072__ActiveX插件的使用
  • Linux云计算 |【第二阶段】SHELL-DAY5
  • pdf文件怎么转换成ppt?介绍几种pdf转ppt的方法
  • 传感技术的应用
  • 利用正则表达式匹配格式并且获取替换内容中数据并保留
  • VS+QT--实现二进制和十进制的转换(含分数部分)
  • 去中心化的力量:探索Web3的分布式网络
  • 工商银行银企直联接口清单
  • Java高级Day40-QQ项目全代码
  • 使用SQL数据构建问答系统的完整指南
  • Nginx泛域名 解析的匹配前缀绑定或转发到子目录
  • APP测试基本流程与APP测试要点总结
  • 什么是单元测试?怎么做?
  • C++系列-匿名对象
  • linux网络命令:使用最多最广泛的网络抓包工具tcpdump详细介绍
  • MATLAB入门教程
  • 检查一个复数C的实部a和虚部b是否都是有限数值即a和b都不是无限数值、空值cmath.isfinite(x)
  • MES管理系统在智能制造中的重要应用