深度学习基础【更新中。。。】
- 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的图像。
卷积的分类