机器学习专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
机器学习主要是研究如何使计算机从给定的数据中学习规律,从观测数据(样本)中寻找规律,并利用学习到的规律(模型)对未知或无法观测的数据进行预测。
训练数据: ( x i , y i ) , 1 ≤ i ≤ m (x_i, y_i), 1 \leq i \leq m (xi,yi),1≤i≤m
模型:
线 性 方 法 : y = f ( x ) = w T x + b 线性方法:y = f(x) = w^Tx + b 线性方法:y=f(x)=wTx+b
非 线 性 方 法 : 神 经 网 络 非线性方法:神经网络 非线性方法:神经网络
优化:
损 失 函 数 : L ( y , f ( x ) ) 损失函数:L(y, f(x)) 损失函数:L(y,f(x))
经 验 风 险 最 小 化 : Q ( θ ) = 1 m ∑ i = 1 m L ( y i , f ( x i , θ ) ) 经验风险最小化:Q(\theta) = \frac{1}{m}\sum_{i=1}^mL(y_i, f(x_i, \theta)) 经验风险最小化:Q(θ)=m1i=1∑mL(yi,f(xi,θ))
正 则 化 : ∣ ∣ θ ∣ ∣ 2 正则化:||\theta||^2 正则化:∣∣θ∣∣2
优化目标函数:
Q ( θ ) + λ ∣ ∣ θ ∣ ∣ 2 Q(\theta) + \lambda||\theta||^2 Q(θ)+λ∣∣θ∣∣2
传统的机器学习:人工特征工程+分类器
深度学习:自动学习多尺度的特征表示
感知机是对生物神经细胞的简单数学模拟,是最简单的人工神经网络,只有一个神经元。
o u t p u t = { 0 i f ∑ j w j x j ≤ t h r e s h o l d 1 i f ∑ j w j x j < t h r e s h o l d output= \left\{ \begin{matrix} 0 & if \sum_j w_j x_j \leq threshold\\ 1 & if \sum_j w_j x_j < threshold\\ \end{matrix} \right. output={01if∑jwjxj≤thresholdif∑jwjxj<threshold
感知机参数学习:
L ( w , b ) = 1 2 ∑ x i ϵ M ( y i − ( w x i + b ) ) 2 y i ~ = w x i + b L(w, b) = \frac{1}{2} \sum_{x_i \epsilon M}{(y_i - (wx_i + b))^2} \quad\quad\quad \widetilde{y_i} = wx_i + b L(w,b)=21xiϵM∑(yi−(wxi+b))2yi =wxi+b
∂ L ( w , b ) ∂ w = − ∑ x i ϵ M ( y i − y i ~ ) x i ∂ L ( w , b ) ∂ b = − ∑ x i ϵ M ( y i − y i ~ ) \frac{\partial L(w, b)}{\partial w} = - \sum_{x_i \epsilon M}{(y_i - \widetilde{y_i})x_i}\quad\quad\quad \frac{\partial L(w, b)}{\partial b} = - \sum_{x_i \epsilon M}{(y_i - \widetilde{y_i})} ∂w∂L(w,b)=−xiϵM∑(yi−yi )xi∂b∂L(w,b)=−xiϵM∑(yi−yi )
w ← w + λ ∑ x i ϵ M ( y i − y i ~ ) x i b ← b + λ ∑ x i ϵ M ( y i − y i ~ ) w \leftarrow w + \lambda \sum_{x_i \epsilon M}{(y_i - \widetilde{y_i})x_i}\quad\quad\quad b \leftarrow b + \lambda \sum_{x_i \epsilon M}{(y_i - \widetilde{y_i})} w←w+λxiϵM∑(yi−yi )xib←b+λxiϵM∑(yi−yi )
卷积神经网络是一种前馈神经网络。局部链接,权值共享,采样。具有平移、缩放和扭曲不变形的特点。
全连接存在的问题:权重矩阵参数非常多,训练效率低下。数据不足时,欠学习。
为了增强卷几层的表示能力,可以使用K个不同的滤波器来得到K组输出。每一组输出都共享一个滤波器。如果我们把滤波器看成一个特征提取器,每一组输出都可以看成是输入图像经过一个特征抽取后得到的特征。因此,在卷积神经网络中每一组输出也叫做一组特征映射。
关于CNN的具体讲解,推荐学习一下这篇博文一文让你彻底了解卷积神经网络里面的基础知识讲解的还是蛮细致的,就是反向传播的过程讲的有些突兀。
下面通过一个例子来了解一下CNN在图像处理中的应用。
LeNet-5提出时间比较早,是一个非常成功的神经网络模型。基于LeNet-5的手写数字识别系统在90年代被美国很多银行使用。该网络一共有7层。
前馈神经网络和CNN存在如下问题:
1.连接存在于层与层之间,每层的节点之间是无连接的。
2.输入和输出的维数是固定的,不能任意改变。无法处理变长的序列数据。
3.假设每次输入都是独立的,也就是说每次网络的输出只依赖于当前的输入。
循环神经网络通过使用自带反馈的神经元,能够处理任意长度的序列。
循环神经网络一个非常重要的概念就是时刻。其会对每一个时刻的输入结合当前模型的状态给出一个输出。
在RNN中,每一个时刻会有一个输入 X t X_t Xt,然后根据RNN当前的状态 A t A_t At提供一个输出 h t h_t ht。而RNN当前的状态 A t A_t At是根据上一个时刻的状态 A t − 1 A_{t-1} At−1和当前的输入 X t X_t Xt共同决定的。RNN最擅长解决的问题是与时间序列相关的。RNN要求每一个时刻都有一个输入,但是不一定每个时刻都需要有输出。
更直观的,我们可以得到如下图所示的循环神经网络:
RNN包括了输入层、隐藏层和输出层。假设时刻t时,输入为 x t x_t xt,隐层状态为 s t s_t st。 s t s_t st不仅和当前时刻的输入相关,也喝上一个时刻的隐层状态 s t − 1 s_{t-1} st−1相关。一般可以使用如下函数:
s t = f ( W s t − 1 + U x t + b ) s_t = f(Ws_{t-1} + Ux_t + b) st=f(Wst−1+Uxt+b)
o t = s o f t m a x ( V s t ) o_t = softmax(Vs_t) ot=softmax(Vst)
这里, f f f是非线性函数,可以为sigmod函数或者tanh函数。
LSTM是RNN的一个变体,可以有效解决简单循环神经网络的梯度爆炸或消失问题。LSTM的关键是引入了一组记忆单元,允许网络可以学习何时遗忘历史信息,何时用新信息更新记忆单元。在时刻t时,记忆单元 c t c_t ct记录了当前时刻为止的所有历史信息,并受三个“门”控制:输入门 i t i_t it,遗忘门 f t f_t ft和输出门 o t o_t ot。三个门的元素的值在[0,1]之间。
下图本别是RNN和LSTM的示意图:
粉色的圈表示逐点(pointwise)操作,例如向量的和,黄色的矩阵表示学习到的神经网络层。
c t c_t ct表示细胞的在时刻t的状态,水平线则表示细胞的状态信息,它类似于一条传送带,直接在整个链上运行,只有一些少量的线性交互。信息在上面流转保持不变会很容易。
若只有上面的那条水平线是无法实现添加或者删除信息的。
LSTM中的门可以选择性的控制信息的流动,通常由一个sigmoid神经网络层和一个point wise(或者叫element wise)的乘法操作组成。sigmoid层输出(一个向量)的每个元素都是一个0和1之间的实数,表示让对应信息通过的权重。
LSTM中主要包含三种门:遗忘门、输入门和输出门。
遗忘门
遗忘门的作用是让LSTM忘记之前没有用的信息。该结构会根据当前的输入 x t x_t xt、上一时刻的状态 c t − 1 c_{t-1} ct−1和上一时刻的输出 h t − 1 h_{t-1} ht−1共同决定哪一部分记忆需要被遗忘, σ \sigma σ表示sigmoid函数。
输入门
在LSTM忘记了部分之前的状态后,它还需要从当前的输入补充最新的记忆,这个过程就是输入门完成的。实现这个需要两个步骤:首先,一个叫做“input gate layer”的sigmoid层决定哪些信息需要更新;一个tanh层生成一个向量,也就是备选的用来更新的内容 C t ~ \widetilde{C_t} Ct 。
把遗忘门和输入门的结果进行整合,对cell的状态进行更新,可以得到当前时刻的状态 C t C_t Ct。
输出门
最终,我们需要确定输出什么值。首先,通过sigmoid层来确定细胞状态的哪个部分输出出去。接着,我们把cell状态通过tanh进行处理(得到一个-1到1之间的值)并将它和sigmoid门的输出相乘,输出结果。
LSTM的变种
GRU(Gated Recurrent Unit)门限循环单元。是LSTM的简化版本,只有两个门:重置门和更新门。在这个结构中,把细胞状态(记忆单元 c t c_t ct)和隐藏状态(神经元活性 h t h_t ht)进行了合并。
更新门z:用来控制当前的状态需要遗忘多少信息和接受多少新信息。
重置门r:用来控制候选状态中有多少信息是从历史信息中得到的