【深度学习】含神经网络、CNN、RNN推理

2022-11-15 18:06:20 浏览数 (2)

深度学习基础【更新中。。。】

  • 1.神经网络
    • 1.1 什么是神经网络
  • 2神经网络前提
    • 2.1二分分类
    • 2.2logistic回归
    • 2.3logistic回归损失函数
    • 2.4 梯度下降法
    • 2.5 logistic回归中的梯度下降法
    • 2.6 m个样本的梯度下降
    • 2.7 向量化【vectorization】
    • 2.8 向量化logistic回归
    • 激活函数
  • 3 神经网络
    • 3.1 神经网络的表示
    • 3.2 计算神经网络的输出
  • 3.3单层感知器
  • 4 卷积神经网络(CNN)
    • 4.1 边缘检测示例
    • 4.2 Padding
  • 5 循环神经网络【RNN】
    • 5.1 序列模型
    • 5.2 循环神经网络
    • 5.3 通过时间的反向传播
  • 6.注意力模型【Attention Model】 入坑,加油!!

1.神经网络

1.1 什么是神经网络

2神经网络前提

2.1二分分类

二分分类【binary classification】

  • eg:假如你有一张图片作为输入,比如这只猫,如果识别这张图片为猫,则输出标签1作为结果;如果识别出不是猫,那么输出标签0作为结果

后续符号说明

y^ 当两个变量间存在线性相关关系时,常常希望建立二者间的定量关系表达式,这便是两个变量间的一元线性回归方程。假定x是自变量,y是随机变量,y对x的一元线性回归方程的表达式为:y ^ =a bx 。因此字母头上加个“^”表示回归值,表示真实值的一种预测,实际的观测值与回归值是存在偏差的

2.2logistic回归

logistic回归【Logistic regression】是一个用于二分分类【binary classification】的算法

2.3logistic回归损失函数

为了训练逻辑回归模型的参数 w 和参数 b ,我们需要一个代价函数【亦称成本函数】,通过训练代价函数来得到参数 w 和参数 b

  • Loss (error) function【损失函数 / 误差函数】用于衡量算法的运行情况 eg:损失函数L来衡量你的预测输出值y^和y的实际值有多接近

注意: Loss (error) function【损失函数 / 误差函数】是在单个训练样本中定义的,它衡量了在单个训练样本中的表现

  • Cost function【成本函数】,用于衡量在全体训练样本上的表现

2.4 梯度下降法

梯度下降法【Gradient Descent】 来训练或学习训练集上的参数w和b

2.5 logistic回归中的梯度下降法

2.6 m个样本的梯度下降

2.7 向量化【vectorization】

2.8 向量化logistic回归

激活函数

激励函数(可微分)使线性结果变成非线性结果 二分类问题,如果不使用激活函数,例如使用简单的逻辑回归,只能作简单的线性划分,如下图所示

如果使用激活函数,则可以实现非线性划分 relu函数是常见的激活函数中的一种,表达形式如下。

Relu函数的图像和求导后的图像如下:

从表达式和图像可以明显地看出:Relu其实就是个取最大值的函数。 ReLU函数其实是分段线性函数,把所有的负值都变为0,而正值不变,这种操作被成为单侧抑制。(也就是说:在输入是负值的情况下,它会输出0,那么神经元就不会被激活。这意味着同一时间只有部分神经元会被激活,从而使得网络很稀疏,进而对计算来说是非常有效率的。)正因为有了这单侧抑制,才使得神经网络中的神经元也具有了稀疏激活性。尤其体现在深度神经网络模型(如CNN)中,当模型增加N层之后,理论上ReLU神经元的激活率将降低2的N次方倍。

3 神经网络

3.1 神经网络的表示

3.2 计算神经网络的输出

3.3单层感知器

感知器(M-P神经元模型) 感知器(Perceptron)由两层神经元组成,如图所示,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,亦称“阈值逻辑单元”。在M-P神经元模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”(activation function)处理以产生神经元的输出。

代码语言:javascript复制
    理想中的激活函数是下图所示的阶跃函数,它将输入值映射为输出值“0”或“1”,显然“1”对应于神经元兴奋,“0”对应于神经元抑制。然而,阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数,如图所示,它把可能在较大范围内变化的输入值挤压到(0,1)输出范围内,因此,有时也称为“挤压函数”。

把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络。

感知器能很容易地实现逻辑与、或、非的运算,注意到

假定函数f为图(a)中的阶跃函数,且x1,x2的取值为0或1,下面通过有两个输入神经元的感知器来实现逻辑与、或、非的运算。

“与”(x1∧x2):令w1=w2=1,θ=2,则

仅在x1=x2=1时,y=1;

“或”(x1∨x2):令w1=w2=1,θ=0.5,则

代码语言:javascript复制
    当x1=1或x2=1时,y=1;

“非”(¬x1):令w1=-0.6,w2=0,θ=-0.5,则

代码语言:javascript复制
    当x1=1时,y=0;当x1=0时,y=1;

更一般地,给定训练数据集,权重wi(i=1,2,… , n)以及阈值θ可通过学习得到,阈值θ可看作一个固定输入为-1.0的哑结点所对应的连接权重w(n 1),这样,权重和阈值的学习就可统一为权重的学习

4 卷积神经网络(CNN)

4.1 边缘检测示例

4.2 Padding

卷积的缺点

  • 第一个缺点是每次做卷积操作,你的图像就会缩小,从6×6缩小到4×4,你可能做了几次之后,你的图像就会变得很小了,可能会缩小到只有1×1的大小。不想让图像在每次识别边缘或其他特征时都缩小
  • 第二个缺点时,如果你注意角落边缘的像素,这个像素点(1,1)只被一个输出所触碰或者使用,因为它位于这个3×3的区域的一角。但如果是在中间的像素点,比如这个(3,4),就会有许多3×3的区域与之重叠。所以那些在角落或者边缘区域的像素点在输出中采用较少,意味着你丢掉了图像边缘位置的许多信息。

为了解决这些问题,可以在卷积操作之前填充这幅图像。在这个案例中,可以沿着图像边缘再填充一层像素。如此,那么6×6的图像就被填充成了一个8×8的图像。如果用3×3的图像对这个8×8的图像卷积,得到的输出就不是4×4的,而是6×6的图像,就得到了一个尺寸和原始图像6×6的图像。

卷积的分类

5 循环神经网络【RNN】

5.1 序列模型

5.2 循环神经网络

5.3 通过时间的反向传播

6.注意力模型【Attention Model】

0 人点赞