文章目录
- 一、基本概念
- 二、深度学习内容总览
- 三、预测YouTube播放量的模型
- 1、假设一个含有未知参数的函数式
- 2、根据Training Data定义一个 Loss
- 3、最优化Optimization
- 4、测试集验证模型性能
- 5、线性模型特征维度提升
- 6、非线性模型
- 7、ReLU
- 四、深度学习概述
- 1、Fully Connect Feedforward Network
- 2、举例:数字识别
- 3、Universal Approximation Theorem
- 4、反向传播backpropagation
- 5、正则化 Regularization
- 6、神奇宝贝属性分类
- 7、逻辑回归
一、基本概念
(1)机器学习就是找一个函数
(2)深度学习是找一个函数,这个函数是神经网络Neural Network
函数的输入可以是:vector、Matrix、Sequence
函数按输出类型划分任务类型:
(1)Regression回归: 函数输出是一个标量(属于连续区间)
(2)Classification分类: 给定一些类别选项,函数输出一个正确的选项。
(3)Structured Learning结构化学习: 创造有结构的东西,例如输出document、image
二、深度学习内容总览
(1)Supervised Learning监督学习:用带标签labels的数据,作为训练数据Training Data,给模型训练。
(2)Self-supervised Learning自监督学习: 如果没法为每个任务收集大量带标签的数据,可以先用无标签unlabeled的数据,进行预训练Pre-train,发展通用知识,比如将一个图片换个背景颜色、旋转个方向,然后再进行训练,让它判断是否为同一张图片。当预训练好后,其在下游任务Downstream Tasks,也会表现很好。其中Pre-trained Model又叫Foundation Model。
(3)Generative Adversarial Network生成对抗网络: 收集大量的输入数据x,以及标签y,不需要它们成对的关系,机器自己把它们的关系找出来。
(4)Reinforcement Learning强化学习: 在不知道怎么给数据打标签时,比如下围棋,人类也不知道下一步下在哪,但知道它的结果的好坏,就可以用RL技术。
(5)Anomaly Detection异常检测: 比如训练数据是猫和狗,给模型一头猪,它需要拥有回答我不知道的能力。
(6)Explainable AI可解释性AI: 模型不仅需要告诉我们答案,还要告诉我们为什么它知道答案是这样。
(7)Model Attack模型的攻击:比如一张图片里稍微改一点,模型分类的结果完全不同。
(8)Domain Adaptation域适应: 比如让模型识别数字,训练数据都是黑白的,但是测试数据Testing Data是彩色的,模型的正确率会暴跌,可以用域适应来解决该问题。
(9)Network Compression模型压缩: 将巨大的模型压缩小一些。
(10)Life-long Learning终身学习: 机器不能一直学习不同的任务,而变得无所不能。 Life-long Learning会解释该原因。
(11)Meta learning元学习: 学习如何学习
三、预测YouTube播放量的模型
这是一个回归问题。
需要以下步骤:
1、假设一个含有未知参数的函数式
该假设的函数式,即为模型model。
这里先假设为线性模型: y = b + w x 1 y=b+wx_1 y=b+wx1,
其中 y y y为预测值, x 1 x_1 x1为特征feature,
b , w b,w b,w为未知参数,需要从data中学习, w w w为权重weight, b b b为偏置bias
2、根据Training Data定义一个 Loss
Loss是关于 b , w b,w b,w的函数,即 L ( b , w ) L(b,w) L(b,w),它是用来评价参数 b , w b,w b,w的好坏的。
L o s s : L = 1 N ∑ n e n Loss:\ L=\frac 1 N\sum\limits_ne_n Loss: L=N1n∑en
当 e = ∣ y − y ^ ∣ e=|y-\hat y| e=∣y−y^∣, L L L是mean absolute error (MAE),
当 e = ( y − y ^ ) 2 e=(y-\hat y)^2 e=(y−y^)2, L L L是mean square error (MSE),
其中 y ^ \hat y y^表示真实值
有位置参数 b , w b,w b,w值,构成的坐标轴,画出的Loss等高线图,叫做Error Surface
3、最优化Optimization
w ∗ , b ∗ = arg min w , b L w^*,b^*=\arg\min\limits_{w,b}L w∗,b∗=argw,bminL
这里用梯度下降法Gradient Descend:
为了方便学习,这里先只考虑 w w w
①随机选取一个初始值: w 0 w^0 w0
②计算 ∂ L ∂ w ∣ w = w 0 \left.\frac {\partial L} {\partial w}\right|_{w=w^0} ∂w∂L w=w0
w 1 ← w 0 − η ∂ L ∂ w ∣ w = w 0 {w_1\leftarrow w^0-\eta \frac {\partial L} {\partial w}|_{w=w^0}} w1←w0−η∂w∂L∣w=w0
其中, η \eta η为学习率 learning rate,是一个超参数。
超参数是在机器学习中,需要自己设定的参数值,而不是通过训练数据中学习到的参数。
③以此方法迭代更新参数 w w w
不用担心局部极小值点问题,因为在线性回归中,loss函数是凸的,没有局部极小值点。
我们应该同时考虑参数 w , b w,b w,b,方法同上:
①随机选取一个初始值: w 0 , b 0 w^0,b^0 w0,b0
②计算梯度 ∂ L ∂ w ∣ w = w 0 , b = b 0 \left.\frac {\partial L} {\partial w}\right|_{w=w^0,b=b^0} ∂w∂L w=w0,b=b0
∂ L ∂ b ∣ w = w 0 , b = b 0 \left.\frac {\partial L} {\partial b}\right|_{w=w^0,b=b^0} ∂b∂L w=w0,b=b0,
其中如果, L ( w , b ) = ∑ n = 1 N ( y ^ n − ( b + w ⋅ x n ) ) 2 {L(w,b)=\sum\limits_{n=1}^{N}(\hat y^n-(b+w \cdot x^n))^2} L(w,b)=n=1∑N(y^n−(b+w⋅xn))2,则
∂ L ∂ w = ∑ n = 1 N 2 ( y ^ n − ( b + w ⋅ x n ) ) ( − x n ) {\frac {\partial L} {\partial w}=\sum\limits_{n=1}^N2(\hat y^n-(b+w\cdot x^n))(-x^n)} ∂w∂L=n=1∑N2(y^n−(b+w⋅xn))(−xn)
∂ L ∂ b = ∑ n = 1 N 2 ( y ^ n − ( b + w ⋅ x n ) ) ( − 1 ) {\frac {\partial L} {\partial b}=\sum\limits_{n=1}^N2(\hat y^n-(b+w\cdot x^n))(-1)} ∂b∂L=n=1∑N2(y^n−(b+w⋅xn))(−1)
然后,
w 1 ← w 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 {w_1\leftarrow w^0-\eta \frac {\partial L} {\partial w}|_{w=w^0,b=b^0}} w1←w0−η∂w∂L∣w=w0,b=b0
b 1 ← b 0 − η ∂ L ∂ b ∣ w = w 0 , b = b 0 {b_1\ \leftarrow b^0\ -\ \eta \frac {\partial L} {\partial b}|_{w=w^0,b=b^0}} b1 ←b0 − η∂b∂L∣w=w0,b=b0
③以此方法迭代更新参数 w , b w,b w,b
4、测试集验证模型性能
前三步为在训练集训练模型的步骤,模型还需在测试集检验性能。测试集是没给模型训练时看过的数据。用测试集上的数据,去求 L o s s Loss Loss值。
5、线性模型特征维度提升
前四步可以构成一个模型训练测试的完成过程。我们发现播放量以七天为一个周期,上下波动,为了进一步降低 L o s s Loss Loss值。将特征维度设为7,模型变为: y = b + ∑ j = 1 7 w j x j y=b+\sum\limits_{j=1}^{7}w_jx_j y=b+j=1∑7wjxj
我们按此思路,维度可以进一步提高到28、56,训练集上的 L o s s Loss Loss随之进一步降低,但测试集的 L o s s Loss Loss会随着维度增高,先是降低,但降到一定程度,并不会继续降低。
6、非线性模型
线性模型太简单,如下图,无论怎么调账 b , w b,w b,w,也很难拟合出一个比较好的函数,线性模型有严重的局限性,我们称之为Model Bias。这时候我们需要将模型变得更复杂更柔性,这就需要用非线性模型。因为模型更复杂,它可能包含的函数集合就越大,就能在训练集上从中挑选出error更小的模型。
这样,可以通过调整参数 w , b , c w,b,c w,b,c,来得到各种形状的sigmoid function。
模型: y = b + w x 1 → y = b + ∑ i c i s i g m o i d ( b i + w i x 1 ) {y=b+ wx_1 \rightarrow y=b+\sum\limits_ic_i sigmoid(b_i+w_ix_1)} y=b+wx1→y=b+i∑cisigmoid(bi+wix1)
提高特征维度:
y = b + ∑ j w j x j → y = b + ∑ i c i s i g m o i d ( b i + ∑ j w i j x j ) {y=b+\sum\limits_j w_jx_j \rightarrow y=b+\sum\limits_ic_i sigmoid(b_i+\sum\limits_jw_{ij}x_j)} y=b+j∑wjxj→y=b+i∑cisigmoid(bi+j∑wijxj)
即,模型的未知参数,组成一个向量,统称为 θ {\boldsymbol {\theta}} θ
定义 L o s s \bf Loss Loss:
模型函数确定后, L o s s Loss Loss和前文一样, L = 1 N ∑ n e n L=\frac 1 N\sum\limits_ne_n L=N1n∑en
新模型优化:
以此方法,不断计算梯度,迭代更新参数。
这里我们可以把训练数据分成一个个的batch,按下图进行训练:
另,我们把一次参数更新,叫做一次update。例:
10,000 examples (N = 10,000), Batch size is 10 (B = 10),在一个epoch中,有1,000 updates
7、ReLU
sigmoid: y = b + ∑ i c i s i g m o i d ( b i + ∑ j w i j x j ) {y=b+\sum\limits_ic_i sigmoid(b_i+\sum\limits_jw_{ij}x_j)} y=b+i∑cisigmoid(bi+j∑wijxj)
ReLU: y = b + ∑ 2 i c i max ( 0 , b i + ∑ j w i j x j ) {y=b+\sum\limits_{2i}c_i \max(0, b_i+\sum\limits_jw_{ij}x_j)} y=b+2i∑cimax(0,bi+j∑wijxj)
注:我们把 Sigmoid 和 ReLU 函数,称之为激活函数。
可以增加更多的隐层 hidden layers,效果更好。
但是并不是说越深越好,会造成过拟合Overfitting,过拟合就是在训练数据表现更好,在未见的数据却表现更差。
四、深度学习概述
Neuron之间不同的连接,会产生不同的结构。
1、Fully Connect Feedforward Network
这里激活函数为sigmoid
如果还不知道参数,只是定出了网络结构,就是定义了一个函数集合,即模型。
写成这种矩阵运算的好处是,可以用GPU加速。
2、举例:数字识别
这是一个分类问题。
我们需要决定一个网络结构,使得一个好的函数,在我们定义的函数集合里。然而我们往往只能通过经验和直接来找出这个网络结构,当然也有一些方法来自动决定网络结构。
接下来可以用梯度下降的方法进行参数优化。
3、Universal Approximation Theorem
万能逼近定理:紧凑域上任何连续函数,都可以通过一个隐藏层的神经网络来近似,且神经元数量越多,近似程度越高。
4、反向传播backpropagation
由于神经网络的参数十分庞大,所以我们利用反向传播算法可以高效地计算它的梯度。
链式法则:
∂ z ∂ w 1 = x 1 {\frac {\partial z} {\partial w_1}=x_1} ∂w1∂z=x1,
∂ z ∂ w 2 = x 2 {\frac {\partial z} {\partial w_2}=x_2} ∂w2∂z=x2,
偏导计算规律是:连接权重的输入值。
由于已知激活函数,所以很容易求 ∂ a ∂ z {\frac {\partial a} {\partial z}} ∂z∂a。如果后面接的网络比较复杂,求 ∂ C ∂ a {\frac {\partial C} {\partial a}} ∂a∂C应用链式法则是比较复杂的。
所以我们可以换个思路,构建一个虚拟的网络,仿照前向传播求导方法,但方向是从前往后求导。
5、正则化 Regularization
如果模型定义为 y = b + ∑ w i x i y=b+\sum w_ix_i y=b+∑wixi,
损失函数我们可以定义为:
L = ∑ n ( y ^ n − ( b + ∑ w i x i ) ) 2 + λ ∑ ( w i ) 2 L=\sum\limits_n(\hat y^n-(b+\sum w_ix_i))^2+\lambda \sum(w_i)^2 L=n∑(y^n−(b+∑wixi))2+λ∑(wi)2,
这样定义损失函数,可以是模型函数更平滑。因为 w i w_i wi会尽可能小,当 x i x_i xi的产生变化量 Δ x i \Delta x_i Δxi, w i Δ x i w_i\Delta x_i wiΔxi也会尽可能小,进而 Δ y \Delta y Δy会尽可能小,函数就会更平滑。
正则化是用来解决过拟合问题的。因为当函数更平滑,就可以减少输入的噪声影响。
6、神奇宝贝属性分类
这是一个分类问题。
将分类问题,按照回归问题做,会出现如下问题:
由于更接近1,被认为是class 1,更接近-1,被认为是class 2。当出现一些远大于1的样本点时,分类边界会移动到它认为远大于1的样本点也接近1的位置。
另外,在多分类问题中,比如1表示class 1, 2表示class 2, 3表示class 3…这样会让模型认为class 1与class 2更接近,class 2与class 3更接近,实际上它们无关联关系。
对于二分类问题:
我们可以假设模型是一个概率分布,这样不在训练数据内的样本,也不会是概率为零:
μ \mu μ决定里这个分布的最高点位置, Σ \Sigma Σ决定了分布的离散程度。确定了这两个参数,就确定了该高斯分布。
这里用最大似然估计来求该参数:
7、逻辑回归
两种方法,获得的w和b是不同的。
生成模型的优点:
①假设一个概率分布,可以需要更少的训练数据。
②假设一个概率分布,可以对噪音更鲁棒。
③先验概率和后验概率可以来自不同的数据源,被估计。
注:右下角的横纵坐标画反了。