摘要
本周主要是学习了机器学习与深度学习的基本概念和相关术语,机器学习,可以看成是一个找函数的过程,我们向函数输入一些数据,函数返回给我们一个结果.。 从视频中预测 Youtube 观看人次这个例子中,我了解了机器学习找函式的三个步骤 。
Abstract
This week, the main focus was on learning the basic concepts and related terminology of machine learning and deep learning. Machine learning can be viewed as a process of finding functions, where we input some data into a function, and the function returns us a result. Through the example of predicting YouTube view counts from the videos, I understood the three steps of machine learning in finding functions.
一.机器学习
1.机器学习概念
机器学习是自动分析获得模型,并利用模型对未知数据进行预测。 通俗的来讲, 机器学习就是让机器具备找一个函式的能力。
2.函数类型
-
Regression,回归问题,输出是一个连续的数值、标量,比如PM2.5预测。
-
Classification,分类问题(输出为离散数值),二分类(Binary Classification)的输出就是0或1、Yes或No。多分类(Multi-Category Classification)的输出就是[1,2,3,…,N],比如图像分类里判断一张图片是猫还是狗还是杯子。
3.机器学习流程
3.1 寻找未知函数
以频道点阅人数的预测为例, 通过历史数据,来产出(预测)未来的观看人数数值
我们可以先简单构造一个函数 y=b+wx1
3.2 构造损失函数
假设 L(b,w) = L(0.5k,1) 函数就为:
y
=
0.5
k
+
1
x
1
y=0.5k+1x_1
y=0.5k+1x1
现在求训练loss: 我们把每一天的误差加起来然后取得平均,N代表训验资料的个数,算出一个L,是每一笔训练资料的误差,就是Loss。L越大,代表现在这一组参数越不好,L越小,代表现在这一组参数越好。
计算差距其实不只一种方式
- 算y跟ŷ之间,绝对值的差距,这一种计算差距的方法,得到的这个大L,得到的Loss叫 mean absolute error(MAE)
- 如果e是用相减y平方算出来的,这个叫mean square error(MSE)
- 如果y和ŷ它都是机率分布的话,可能会选择Cross-entropy
3.3 优化
把未知的参数w跟b,找一个数值出来,代入L,让Loss的值最小,那个就是我们要找的w跟b。
在这一门课里面唯一会用到的Optimization的方法,叫做梯度下降法(Gradient Descent)。先假设未知的参数只有一个,只有w这个未知的参数。
那当w代不同的数值的时候,就会得到不同的Loss,这一条曲线就是error surface
首先随机选取一个初始的点w₀,接下来计算,在w等于w0的时候,w这个参数对loss的微分,即切线的斜率。w’= w 0 w_0 w0- η \eta η ∂ L / ∂ w \partial L/\partial w ∂L/∂w,当斜率小于零时, ∂ L / ∂ w \partial L/\partial w ∂L/∂w<0,w’向右移动,反之向左移动,直到 ∂ L / ∂ w \partial L/\partial w ∂L/∂w 接近零或计算次数达到设定值。移动的步伐的大小取决于两件事情:
- 斜率,这个地方的斜率大,这个步伐就跨大一点,斜率小步伐就跨小一点。
- 另外一个东西会影响步伐大小,这个η叫做学习速率(learning rate),它是你自己设定的。如果η设大一点,那你每次参数update就会量大。
在有两个参数的情况下,我们给它随机的初始的值,就是w⁰跟b⁰ ,算w对L的微分,计算b对L的微分,用一个参数时的方法更新w和b;
上述三个步骤合起来叫做训练,是根据以往资料上计算的loss,我们真正需要的是预测未来的观看人次,我们先用上面计算出的函数预测一下
仔细观察这个图,它是有周期性的,它每隔七天就会有两天特别低,所以既然我们已经知道每隔七天是一个循环,那这一个model显然是不好的。 如果我们以7天为一个周期,再计算一下误差
结果显然更好了,我们再考虑更多天
可以看出28天后接下来再考虑更多天数据也许已经到了一个极限 。
这边这些模型输入x(feature),把feature乘上一个weight,再加上一个bias就得到预测的结果,这样的模型有一个共同的名字,叫做Linear model,那我们接下来会看,怎么把Linear model做得更好。
4.寻找更优的Loss函式
对于下面这条红线(piecewise linear curve),你永远不能用Linear Model来很好的拟合它。所以我们需要一个更加有弹性的,有未知参数的Function。
4.1 拟合一条分段折线
仔细观察红色的这一条曲线,它可以看作是一个常数,再加上一群蓝色的 Function。
只要取的点够多,任何连续曲线,你都能用piecewise linear curve (分段线性线段)去逼近他。
4.2 蓝线的表示
下图中使用sigmoid函数来逼近蓝色曲线。
在sigmoid函数中包含图像的高度c、图像的斜率w、图像的截距b。一次性调整一个或者多个参数得到一个更加逼近蓝色曲线的函数。如果你改 w ,会改变斜率(斜坡的坡度),如果你改 b ,Sigmoid Function 可以左右移动,如果你改 c ,可以改变它的高度(曲线和y轴的交点)
你只要有不同的 w 、b 和 c,你就可以制造出不同的Sigmoid Function,把不同的 Sigmoid Function 叠起来以后,你就可以去逼近各种不同的Piecewise Linear 的 Function
我们可以用多个 Feature,我们用j表示前几天的观看人数,i代表每个sigmoid函数
如上图所示,这个表达式可以用矩阵化简。
输入Feature x 这个向量,x 乘上矩阵 w 加上向量 b 得到向量 r,向量 r 通过 Sigmoid Function得到向量 a,再把向量 a 跟乘上 c 的 转置加上 b 就得到 y。
4.3从训练数据定义loss函数
先给定某一组 W、b、c^T跟 b的初始值,然后把一种 Feature x 带进去,然后看看你估测出来的 y 是多少,再计算一下跟真实的 Label 之间的差距,你得到一个 e,把所有的误差通通加起来,你就得到你的 Loss。
4.4 Optimization
我们一开始要随机选一个初始的数值
θ
0
\theta _0
θ0,对每一个未知的参数,去计算对 L 的微分以后,集合起来它就是一个向量, 算出这个 g( Gradient ) 以后,接下来我们更新参数 。
batch
在实际的最优化过程中,我们将很多的数据分成好多份,每一份算出一个L
i
_i
i
出来,然后使用它迭代计算 θ
∗
^*
∗
update:是使用一个batch中的数据训练出的L迭代一次。
epoch :使用每一个batch迭代过一次θ ,每一个epoch之后会重新分配batch进行训练(Shuffle)
5.模型变型
ReLU
我们其实还可以对模型做更多的变形 , 可以不一定要换成 Soft 的 Sigmoid,有其他的做法。 举例来说这个 Hard 的 Sigmoid,它可以看作是两个 Rectified Linear Unit 的加总,所谓 Rectified Linear Unit (ReLU)如下图。
ReLU函数其实是分段线性函数,把所有的负值都变为0,而正值不变,这种操作被成为单侧抑制
ReLU的优点:
- ReLu具有稀疏性,可以使稀疏后的模型能够更好地挖掘相关特征,拟合训练数据;
- 在x>0区域上,不会出现梯度饱和、梯度消失的问题;
- 计算复杂度低,不需要进行指数运算,只要一个阈值就可以得到激活值。
RuLU的缺点也同样明显:
- 输出不是0对称
- 由于小于0的时候激活函数值为0,梯度为0,所以存在一部分神经元永远不会得到更新
ReLU预估
二. 深度学习
深度学习是机器学习的一个分支(最重要的分支), 深度学习的概念源于人工神经网络的研究,但是并不完全等于传统神经网络。
我们以识别图片中的汉字为例。
假设深度学习要处理的信息是“水流”,而处理数据的深度学习网络是一个由管道和阀门组成的巨大水管网络。网络的入口是若干管道开口,网络的出口也是若干管道开口。这个水管网络有许多层,每一层由许多个可以控制水流流向与流量的调节阀。根据不同任务的需要,水管网络的层数、每层的调节阀数量可以有不同的变化组合。对复杂任务来说,调节阀的总数可以成千上万甚至更多。水管网络中,每一层的每个调节阀都通过水管与下一层的所有调节阀连接起来,组成一个从前到后,逐层完全连通的水流系统。
网络是一个由管道和阀门组成的巨大水管网络。网络的入口是若干管道开口,网络的出口也是若干管道开口。这个水管网络有许多层,每一层由许多个可以控制水流流向与流量的调节阀。根据不同任务的需要,水管网络的层数、每层的调节阀数量可以有不同的变化组合。对复杂任务来说,调节阀的总数可以成千上万甚至更多。水管网络中,每一层的每个调节阀都通过水管与下一层的所有调节阀连接起来,组成一个从前到后,逐层完全连通的水流系统。