系列文章目录

第一章 人工智能发展大事件第二章 PyTorch基础第三章 深度学习基础



文章目录

  • 系列文章目录
  • 一、人工神经网络(ANN)
  • 二、深度学习基础
  • 三、计算机视觉
  • 四、卷积神经网络
  • 五、循环神经网络(ing)



一、人工神经网络(ANN)

人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。
   神经网络是一种运算模型,由大量的节点(或称神经元neuron)之间相互联接构成。
   每个节点代表一种特定的输出函数,称为激励函数(activation function)。
   每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),这相当于人工神经网络的记	忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。

人工智能神经网络模型 人工智能 神经网络_神经网络


如图所示

  • 单层感知器(人工神经网络)
  • 输入层
  • 隐藏层
  • 输出层
  • 多隐藏层的多层感知器(深度学习)

二、深度学习基础

  • 基础概念:
  • 前向传播
  • 反向传播
  • 梯度问题
  • 损失函数
  • 设置一个损失函数用来比较模型的输出与目标值,通过最小化损失来驱动网络结构的训练
  • 网络损失通过前向传播计算,网络结构的参数相对于损失函数的梯度通过反向传播计算
  • 分类问题损失函数
  • nn.BCEloss;nn.CrossEntropyLoss
  • 回归问题损失
  • nn.L1Loss;nn.MSELoss等等
  • 激活函数:增加网络的非线性,提高网络的表达能力
  • ReLU
  • Leakly ReLU
  • ELU
# inplace : inplace操作,见第二章
torch.nn.ReLU(inplace = True)
  • 模型拟合
  • 正则化
  • 学习率
  • 监督学习及深度学习中重要的超参,决定目标函数能否收敛到局部最小值及何时收敛到最小值
  • 合适的学习率能够使目标函数在合适的时间内收敛到局部最小值
torch.optim.lr_scheduler.ExponentialLR
torch.optim.lr_scheduler.LambdaLR()
torch.optim.lr_scheduler.MultiStepLR()
torch.optim.lr_scheduler.StepLR()
...
  • 优化器
  • GD、 BGD、SGD、MBGD
  • 引入随机性和噪声
  • Momentum、NAG
  • 加入动量原则,具有加速梯度下降的作用
  • AdaGrad、RMSProp、Adam、AdaDelta
  • 自适应学习率
#params: 用于优化或定义参数组的参数表
torch.optim.Adam(params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8,
             weight_decay=0, amsgrad=False)
  • 经典模型
  • 波士顿放假预测
  • 手写字识别

三、计算机视觉

  • 颜色空间(色彩模型)
  • RGB色彩模式
  • HSV色彩模式
  • 灰度图
  • 图像处理
  • 亮度/对比度/饱和度
  • 直方图均衡化
  • 图像滤波
> 滤波是一个邻域操作算子,利用给定像素周围的像素的值决定此像素的最终的输出值
  • 平滑降噪
  • 归一化块滤波器
  • 高斯滤波器
  • 中值滤波器
  • 双边滤波
  • 锐化增强
  • 微分法
  • 高通滤波法
  • 边缘检测
  • 检测角点
  • 模版匹配
  • 图像边缘提取 (抓取图像纹理信息 高频or 低频)
  • 形态学运算
  • Opencv 库
  • 计算机视觉的特征工程
  • 分类
  • 检测
  • 分割
  • 匹配
  • 跟踪

四、卷积神经网络

  • 卷积层
  • 卷积层(Convolutional layer),卷积神经网络中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法最佳化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低级特征中迭代提取更复杂的特征。
  • 对图像和滤波矩阵做内积(逐个元素相乘,再求和)的操作
# Conv2d参数详解
# in_channels:输入维度
# out_channels:输出维度
# kernel_size:卷积内核的大小(如(3,2),3与(3,3)等同)
# stride:卷积步长,就是卷积操作时每次移动的格子数
# padding:卷积方式 只有两个取值,'SAME'和'VALID',第一个是填充边界,第二个是当不足以移动时直接舍弃(目标检测)
# dilation:空洞卷积的空洞指数,一般默认为1即可(填充卷积核)(分割网络)
# groups:分组卷积的组数,一般默认设置为1(分组卷积,降低模型计算量  深度可分离卷积)
# bias:卷积偏置,默认为True,增加模型的泛化能力
# padding_mode: 设置边缘填充值为0,或别的数,一般都默认设置为0
# 下采样的过程
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1,
                 padding=0, dilation=1, groups=1,
                 bias=True, padding_mode='zeros'))
# 反卷积(转置卷积)
# 上采样的过程
torch.nn.ConvTranspose2d()
  • 感受野
  • 感受野(Receptive Field),神经网络中的神经元“看到的”输入区域,在卷积神经网络中,feature map上某个元素的计算受输入图像上的某个区域的影响,这个区域即感受野。
  • 卷积神经网络中,越深层的神经元看到的输入区域越大,如下图所示,kernel size 均为3×3,stride均为1,绿色标记的是Layer2 每个神经元看到的区域,黄色标记的是Layer3 看到的区域,具体地,Layer2每个神经元可看到Layer1 上 3×3 大小的区域,Layer3 每个神经元看到Layer2 上 3×3 大小的区域,该区域可以又看到Layer1 上 5×5 大小的区域。
  • 感受野的存在,设计卷积神经网络使用小卷积核,加深网络,能够通过relu层激活函数增加网络的非线性表达能力,同时降低参数量和计算量

人工智能神经网络模型 人工智能 神经网络_卷积_02

  • 卷积层的参数量 (参与计算的参数的个数,占用内存空间)
         Cin *((K * K)+1)*Cout
    输入维度 * (卷积核 +偏置) * 输出维度
  • FLOPS: 每秒浮点运算次数(计算速度,衡量硬件性能的指标)
  • FLOPs:浮点运算数(计算量,衡量算法的复杂度)
         (Cin * 2 * K * K )* Wout * Hout * Cout
    Cin * 2 * K * K :一个卷积运算的计算量
    Wout * Hout :输出特征图大小
    Cout:特征图channel的大小
  • MAC:乘加次数,衡量计算量
         Cin * K * K * Wout * Hout * Cout
  • 压缩卷积层
  • 多个 3 * 3 的卷积核替代大卷积核
  • 采用深度可分离卷积
  • 通道Shuffle
  • Pooling层
  • Stride = 2
  • 常见的卷积层组合结构
  • 堆叠 eg. VGG
  • 跳连 eg. resNet
  • 并连 eg. inception
  • 池化层
  • 对输入的特征图进行压缩
  • 特征值变小,简化网络计算复杂度
  • 特征压缩,提取主要特征
  • 最大池化(Max Pooling)、平均池化(Average Pooling)等
#  return_indices:默认False 如果为True,将返回最大索引以及输出  (上采样使用)
#  ceil_mode:计算输出特征图大小 False:向下取整  True:向上取整
torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1,
                ceil_mode=False, return_indices=False)
  • 上采样层
  • Resize ,如双线性差值直接缩放,类似于图像缩放
  • Deconvolution (Transposed Convolution)
  • 实现函数
# Resize
# scale_factor:空间大小的乘数。如果是元组,则必须匹配输入大小。与size只存在一个
nn.functional.interpolate(input, size, scale_factor, mode, align_corners)

# Deconvolution  
nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1,
                 padding=0, output_padding=0, groups=1, bias=True,
                 dilation=1, padding_mode='zeros')
  • 激活层
  • BatchNorm层
  • 通过规范化手段,把每层神经网络任意神经元的输入值的分布强行拉回到均值为0方差为1的标准正态分布
  • 归一化方法的一种 ,减小图像之间的绝对差异,突出相对差异,加快训练速度
  • 不适用问题:image-to-image 以及 噪声敏感的任务
nn.BatchNorm2d(num_features, eps=1e-5, momentum=0.1, affine=True,
             track_running_stats=True)
  • 全连接层
  • 连接所有的特征,将输出送给分类器(eg.softmax分类器)
  • 对前层的特征进行一个加权和 ,(卷积层是将数据输入映射到隐藏特征空间)将特征空间通过线性变换映射到样本标记空间(输出层 lable)
  • 可以通过1 * 1 卷积 + global average pooling代替
  • 可以通过全连接层参数冗余
  • 全连接层参数与尺寸相关
nn.Linear(in_features,out_features,bias)
  • Dropout层
  • 在不同的训练过程中随机扔掉一部分神经元
  • 测试过程中不适用
  • 为了防止或减轻过拟合而使用的函数,一般用在全连接层
nn.dropout
  • 经典卷积神经网络结构
  • 简单神经网络
  • LeNet
  • AlexNet
  • VGGNet (网络最大深度19层):
    为了研究网络深度对模型准确性的影响,采用小卷积堆叠的方式,搭建网络结构
  • 复杂神经网络
  • ResNet(深度50-101):
    通过引入跳连的结构防止梯度消失的问题,从而进一步增强了网络深度
  • InceptionNet V1-V4(并行结构)(主要思想:用密集成分来近似最优的局部稀疏结
    设计网络结构的时候,不仅强调网络的深度,同时也考虑网络的宽度,并将这种结构定义为Inception结构(一中网中网(Network In Network)的结构),即原来的节点也是一个网络
  • DenseNet
  • 轻量型神经网络
  • MobileNet v1-v3
  • ShuffleNet
  • squeezeNet
  • 多分支网络结构
  • SiameseNet
  • TripletNet
  • QuadripletNet
  • 多任务网络
  • Attention机制
  • 对于全局信息,注意力机制会重点关注一些特殊的目标区域,即注意力聚焦,进而利用有限的主义理论资源对信息进行筛选,提高信息处理的准确性和效率
  • one-hot分布或者soft的软分布
  • Soft-Attention或者 Hard-Attention
  • 作用范围
  • 特征图上
  • 尺度空间上
  • channel尺度
  • 不同时刻历史特征
  • 网络模型
  • ResNet + Attention
  • SENet/Channel + Attention

五、循环神经网络(ing)