Introduction of Machine / Deep Learning
-
- [I I I. Machine Learning ≈ Looking for Function](#I I I. Machine Learning ≈ Looking for Function)
- [I I . II. II. Different types of Functions](#I I . II. II. Different types of Functions)
- [I I I . III. III. The Steps of Machine Learning](#I I I . III. III. The Steps of Machine Learning)
-
- [1.Find a Model with Unknown Parameters](#1.Find a Model with Unknown Parameters)
- [2.Define Loss from Training Data](#2.Define Loss from Training Data)
- 3.Optimization
-
- [梯度下降(Gradient Descent)](#梯度下降(Gradient Descent))
- [I V . IV. IV. More Models](#I V . IV. IV. More Models)
-
- [一、Piecewise Linear Curves 分片线性曲线](#一、Piecewise Linear Curves 分片线性曲线)
-
- [1. 怎样拟合](#1. 怎样拟合)
- [2. 基本单位:Sigmoid Function](#2. 基本单位:Sigmoid Function)
- [3. 抽象总结](#3. 抽象总结)
- [4. 定义 L o s s Loss Loss](#4. 定义 L o s s Loss Loss)
- [5. 模型 Optimization](#5. 模型 Optimization)
- 二、基本单位(激活函数)的扩展
- [V . V. V. Neural Network and Deep Learning](#V . V. V. Neural Network and Deep Learning)
I I I. Machine Learning ≈ Looking for Function
根据给出数据,模型通过学习寻找到一个合适的函数,计算出输出
I I . II. II. Different types of Functions
- Regression 回归分析 :函数输出一个标量.
- Classification 分类 :给出一些分类选项,模型给出正确的分类
I I I . III. III. The Steps of Machine Learning
1.Find a Model with Unknown Parameters
首先根据具体问题选择一个合适的模型/函数,带有未知的参数等待求解.
2.Define Loss from Training Data
我们需要定义一个损失函数 Loss
,用于评估模型后续学习的成果,相当于用学生的卷面成绩来评估学习水平。
Loss:损失函数,用于评估模型预测值与真实值(label)之间的偏差(bias)
最常见的损失函数主要有均值绝对误差 与均方误差 .
3.Optimization
对模型进行优化
最重要的方法:梯度下降(Gradient Descent)
梯度下降(Gradient Descent)
- 在
Loss
函数的图像上选取一个起始点 w 0 w^0 w0; - 计算 ∂ L ∂ w ∣ w = w 0 \frac{\partial L}{\partial w} \bigg|_{w = w^0} ∂w∂L w=w0 ;
- 选取偏导数(斜率、梯度)下降的方向,更新 w 1 w^1 w1 的值为: w 0 − η ∂ L ∂ w ∣ w = w 0 w^0 - \eta\frac{\partial L}{\partial w} \bigg|_{w = w^0} w0−η∂w∂L w=w0 ;
- 迭代地重复以上操作,直到找出最优值 w T w^T wT.
I V . IV. IV. More Models
如上文中我们举例中的函数 y = w x + b y = wx + b y=wx+b 这种变量与系数呈简单的线性关系的模型称为线性模型(Linear Model) .
线性模型对于很多特殊问题来说太过于简单(存在Model Bias现象),不能很好的描述与预测复杂数据,因此需要引入新模型
一、Piecewise Linear Curves 分片线性曲线
1. 怎样拟合
类似于分段函数的构建,对于一个更复杂的曲线,可以使用若干个简单的线性函数的曲线逼近,如图:
复杂的红色曲线可以使用三条蓝色的简单曲线与一个常数相加获得。
那么同理,对于一些连续平滑的曲线,仍然可以使用这样的分片相加的方式进行逼近:
万事俱备,现在最主要的问题在于,如上图这样的蓝色函数曲线应该怎么描述。
2. 基本单位:Sigmoid Function
 如上图所示的蓝色折线曲线,直接用函数表示需要进行分段,略显麻烦因此选取一个近似的连续平滑函数进行描述:
y = c 1 1 + e − ( b + w x ) y = c\frac{1}{1+e^{-(b+wx)}} y=c1+e−(b+wx)1
如下图所示:
称这样的函数为 S i g m o i d F u n c t i o n Sigmoid \; Function SigmoidFunction
可以通过调节函数中的 c 、 b 、 w c、b、w c、b、w 参数来调整不同的curve形状:
通过这样的方式我们可以得到若干个满足我们要求的Sigmoid Functions,那么对这些函数进行叠加就可以拟合出我们想要的模型:
3. 抽象总结
我们给出这样一个情形,有3个sigmoid function,每个function中含有3个变量(feature)
这样的式子可以展开并总结为下面的矩阵形式:
可以发现,式子写成向量形式之后,变成了与我们线性模型一样的式子。再加上外层的常数项与系数之后,最终的流程图与向量函数如下:
这里我们可以看到有很多的未知参数,为了方便计算起见,将所有的参数全部记为一个未知参数向量 θ \boldsymbol{\theta} θ.
θ = [ θ 1 θ 2 ... θ n ] \boldsymbol{\theta}= \left[ \begin{matrix} \theta_1\\\theta_2\\...\\\theta_n \end{matrix} \right] θ= θ1θ2...θn
4. 定义 L o s s Loss Loss
L o s s Loss Loss 函数采用上述提到的 θ \boldsymbol{\theta} θ 未知参数来定义: L ( θ ) L(\boldsymbol{\theta}) L(θ)
根据实际问题选择一个损失函数的计算方法即可。
5. 模型 Optimization
根据我们上一个部分提到的模型优化的含义,即是找到一组最优的 θ \boldsymbol{\theta} θ 取值,使得损失函数的值最小:
θ \boldsymbol{\theta} θ的迭代更新方法也与上述使用线性模型时类似,但由于这里使用了向量变量,对应的位置变量导数需要变为向量(多元未知数)的梯度 :
如图所示,首先选取一组初始的 θ 0 \boldsymbol{\theta_0} θ0 的值,仍然按照梯度下降的方法不断更新 θ i \boldsymbol{\theta_i} θi 即可。迭代的次数取决于开发者设置的超参数(Hyperparameter),如人为设定的最大迭代次数,或损失函数值低于一个特定值,抑或是在局部取到极小值。
在实际情况中,模型训练的数据量通常会非常大,对每一个数据计算 L o s s Loss Loss 会大大拖慢模型训练速度,浪费计算机性能,因此通常会将庞大的数据分为若干个分组 Batch,仅对每一个Batch计算 L o s s Loss Loss,进行 update。将所有的 Batch 都计算更新一遍的过程称为一个 epoch.
二、基本单位(激活函数)的扩展
如上述说的 S i g m o i d F u n c t i o n Sigmoid \;Function SigmoidFunction 这样的基本函数被称为 激活函数 A c t i v a t i o n F u n c t i o n Activation \;Function ActivationFunction.
类似的激活函数除了 S i g m o i d Sigmoid Sigmoid以外,还有一种称为 R e c t i f i e d L i n e a r U n i t ( R e L U ) Rectified Linear Unit (ReLU) RectifiedLinearUnit(ReLU):
如图所示,即将基本单位更细分化一些。
实际模型结果表明,使用 R e L U ReLU ReLU 的拟合和预测效果更好。
V . V. V. Neural Network and Deep Learning
在使用线性模型进行计算时,会有如下的流程图:
实际上,这样的计算流程可以再叠加一层或是几层,可以得到更好的训练效果:
其实是对原先模型的因变量再使用相同模型或其他模型进行拟合,这样进行一层一层加深的拟合/学习的方法称为 深度学习( D e e p L e a r n i n g Deep \;Learning DeepLearning ):
模型中使用的激活函数称为一个个 神经元( N e u r o n Neuron Neuron ),因此整个过程也被称为神经网络( N e u r a l N e t w o r k Neural\; Network NeuralNetwork )。
对于深度学习使用的层数,有相当多的案例表明,层数过多会引发 过拟合(Overfitting) 问题。