天池学习-深度学习入门与实践-1.基于人脸的常见表情识别(1)——深度学习基础知识(基本无代码全理论

天池学习-深度学习入门与实践-1.基于人脸的常见表情识别(1)——深度学习基础知识(基本无代码全理论)

1 神经网络

1.1 感知机

Frank Rosenblatt 在1957年提出
最简单的人工神经网络
通常情况下指单层的人工神经网络
类似一逻辑回归模型,可做线性分类任务,但不能做更复杂的任务(第二次AI浪潮中马文·明斯基证明连 XOR(异或)都无法正确解决。)n维输入的单层感知机

x1 至 xn — n 维输入向量的各个分量
w1j 至 wnj—为各输入分量连接到感知机的权量(或称权值)
theta —阈值
f —激活函数/激励函数/传递函数(理想:阶跃函数或sigmoid函数)
o —标量输出

1.2 多层感知机与反向传播

1974 哈佛 Paul Werbos 证明增加一个网络层,利用反向传播算法解决 XOR
后来 Rummelhart,McClelland 以及 Hinton 在 1986 年正式在多层感知器 (MLP) 中使用 BP 算法,采用 Sigmoid 进行非线性映射,有效解决了非线性分类和学习的问题。

多层感知机(Multi-Layer Perceptron)是由单层感知机推广而来
特点是有多个神经元层
输入层:MLP 的第一层;
隐藏层:MLP 中间的层;(没规定数量)
输出层:MLP 最后一层。(每层神经元的个数0没有限制)
在这里插入图片描述MLP关键问题:如何训练其中各层间的连接权值
方法:反向传播BP算法
在这里插入图片描述在这里插入图片描述η—学习率了,一层一层推导下去
反向传播算法让多层感知机/传统的全连接神经网络有了训练的手段,引发了神经网络的第二次热潮,但全连接神经网络总算是正式起来了。

2 卷积神经网络

2.1 全连接神经网络的2大缺陷

  1. 原理上的缺陷:BP神经网络—有监督的传统机器学习
    不过是将SVM或者其他分类器换成神经网络,增加了问题的复杂度。
    在这里插入图片描述提取的特征—一定程度上丢失图像中的结构信息,从而丢失了一些对旋转扭曲等的不变性。
    为了学习到如偏移等微小的变化—需要有足够多的参数和足够多丰富的样本(最终学习到的权重,可能在不同的位置有相似的权重)

  2. 结构上的缺陷:参数巨多,丢失空间信息。

2.2 卷积神经网络的崛起

LeNet5—1999年由深度学习三巨头中LeCun, Bengi的提出(两个概念(局部连接+池化))

3 卷积神经网络的基本网络层

Convolutional Neural Networks-CNN
CNN 主要包含卷积层、池化层和全连接层
卷积层:用于对图像进行特征提取操作,其卷积核权重是共享权值的,对应的相关概念还包括步长,填充。
池化层:用于降低特征图大小,降低后续操作的计算量和参数量
全连接层:最终进行分类输出使用,本质就是多层感知机

1. 什么是卷积?
信号处理:任意一个线性系统的输出,就是输入信号和系统激励函数的卷积。
数字图像处理:卷积操作一般指图像领域的二维卷积
在这里插入图片描述卷积就是:一个核矩阵在一个原始矩阵从上往下、从左往右扫描,每次扫描都得到一个结果,将所有结果组合到一起得到一个新的结果矩阵。
注意这里我们不区分卷积和互相关,它们的区别只在于权重算子是否进行了翻转。(在机器学习中,卷积核是否翻转,并不影响算法学习。)

import torch 
from torch import nn

def corr2d(X, K):  # X 是输入,K是卷积核
    h, w = K.shape  # 获取卷积核的大小
    Y = torch.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1))
    for i in range(Y.shape[0]):
        for j in range(Y.shape[1]):
            Y[i, j] = (X[i: i + h, j: j + w] * K).sum()  # 累加
    return Y

X = torch.tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) # 模拟一个输入
K = torch.tensor([[0, 1], [2, 3]])                  # 模拟一个卷积核
corr2d(X, K)

在这里插入图片描述

3. 填充(Padding)

--使卷积后图像分辨率不变,方便计算特征图尺寸的变化
--弥补边界信息“丢失”

填充(padding)是指在输入高和宽的两侧填充元素(通常是0元素)。
在这里插入图片描述
4. 步长(Stride)
卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。我们将每次滑动的行数和列数称为步幅或步长(stride)。
在这里插入图片描述5. 池化
对图像进行下采样,降低图像分辨率。

池化层的作用:使特征图变小,简化网络计算复杂度;压缩特征,提取主要特征

常见的池化操作可以分为:最大池化(Max Pool)、平均池化(Avg Pool)
在这里插入图片描述
6. 卷积和池化输出尺寸计算
在这里插入图片描述
7. 为什么要用卷积来学习呢?
图像:用方形矩阵表达
学习的本质:就是要抽象出特征
边缘检测:它就是识别数字图像中亮度变化明显的点,这些点连接起来往往是物体的边缘。
边缘检测常用的方法:包括一阶和二阶导数法,本质上都是利用一个卷积核在原图上进行滑动,只是其中各个位置的系数不同,比如3×3的sobel算子计算x方向的梯度幅度,使用的就是下面的卷积核算子。
卷积提取特征的本质:如果要用sobel算子完成一次完整的边缘检测,就要同时检测x方向和y方向,然后进行融合。这就是两个通道的卷积,先用两个卷积核进行通道内的信息提取,再进行通道间的信息融合。
这就是,而所有基于卷积神经网络来学习的图像算法,都是通过不断的卷积来进行特征的抽象,直到实现网络的目标。

8. 卷积神经网络的优势在哪?

学习原理上的改进
卷积神经网络不再是有监督学习了,不需要从图像中提取特征,而是直接从原始图像数据进行学习,这样可以最大程度的防止信息在还没有进入网络之前就丢失。

学习方式的改进
前面说了全连接神经网络一层的结果是与上一层的节点全部连接的,100×100的图像,如果隐藏层也是同样大小(100×100个)的神经元,光是一层网络,就已经有 10^8 个参数。要优化和存储这样的参数量,是无法想象的,所以经典的神经网络,基本上隐藏层在一两层左右。
卷积神经网络某一层的结点,只与上一层的一个图像块相连。

用于产生同一个图像中各个空间位置像素的卷积核是同一个,这就是所谓的权值共享。对于与全连接层同样多的隐藏层,假如每个神经元只和输入10×10的局部patch相连接,且卷积核移动步长为10,则参数为:100×100×10×10,降低了2个数量级。 又能更好的学习,参数又低,卷积神经网络当然是可以成功

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-KWOK-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值