Deep-Learning0


DeepLearning基本步骤

我们需要一个可以解决问题的方案(函数)

1.建立含未知参数的函数,函数的形式很重要,函数中参数的取值也很重要。

2.定义变量Loss作为判断参数是否合理的依据(需要已有数据进行参考)。

$$
e=|y-\hat{y}|或(y-\hat{y})^2,y是推测值,\hat{y}是真实值
$$


$$
Loss: L=1/N\sum_{i=1}^{n}e_n
$$

3.最优化参数(梯度下降法)

不断迭代w的值使得Loss最小,或者规定最大迭代次数,得到最优的参数值w

梯度下降0

梯度下降1

以上三步就是Training(训练)

由已知数据直接确定参数

已知数据明显以七天为周期,将b固定,以第一周的数据为基准设定w1~w7,事实上对于长期的预测没有太大帮助。

遇到复杂的函数怎么办?

按步骤来

1.得到函数的形式

通过已有数据做出函数图像。

对于折线,可将多个简单的”Z型“线性模型进行组合

得到函数0

对于曲线,可通过折线对其进行拟合

得到函数1

而作为图像拟合基础的“Z”型的线性模型是一个特别的函数Sigmoid Function拟合的(S型函数)

得到函数2

通过调整sigmoid function的参数来调整其图像形状从而组合、拟合目标函数

得到函数3

于是,我们可以通过多个sigmoid函数的组合来写出最终的函数方程

得到函数4

简单的拟合函数可以变形成更精确的形式

得到函数5

将函数拆开仔细分析,可以得到矩阵表示

得到函数6

得到函数7

得到函数8

得到函数9

得到函数10

整理所有未知参数

得到函数11

2.定义Loss变量

定义Loss为有关所有参数的函数L

定义Loss变量0

3.最优化参数

先随机选出一组参数值,对它们求导,进行梯度运算,直到得到零向量或者不想再做为止。

最优化参数0

最优化参数1

实际训练时会将大量的原始数据分成很多较小的batch,对每一个batch,首先根据batch里的数据估计出各个Loss函数的形式,为了参数可以顺利传递,参数的种类个数是不变的,但是参数的存在形式是可以不同的(幂次、组合),对于不同的batch,learningrate也可以进行调整。

最优化参数2

分的batch越多,一次epoch所update的次数越大

最优化参数3

其实也有真正直线型的”Z型“函数ReLU

它是由两个分段线性函数组合而成的,可以用它代替sigmoid

最优化参数4

两个常见的激活函数ReLUSigmoid

最优化参数5

为了得到更精确的参数,往往会在激活函数内部嵌套激活函数,层层调用。

最优化参数6

最优化参数7

因此得名DeepLearning

最优化参数8

事实上,层数太多也会有 过拟合现象,在已知数据层可以跑的很好,但在预测未知数据时偏差就会变大,层数如此之多,为何选择不增多激活函数的个数而是选择层层嵌套结构呢,请待下回分解。


文章作者: chris2ease
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 chris2ease !
  目录