目录

Ⅰ 函数的类型

Ⅱ 深度学习的步骤(以预测播放量为例)

2.1 定义含未知参数的函数

2.2 定义一个损失函数(Loss)

2.3 优化 Optimization

梯度下降 Gradient Descent

2.4 改进1: 使用前一段时间的播放量来预测明天的播放量

2.5 改进2: 采用非线性函数表达式

2.5.1 定义未知参数的函数

2.5.2 定义损失函数(同上)

2.5.3 优化(同上)

2.6 多层神经网络


Ⅰ 函数的类型

  • Regression(回归): The function outputs a scalar.
  • Classification(分类): Given options(classes),the function outputs the correct one.
  • Structured Learning(结构化学习):create something with structure(image,document)

Ⅱ 深度学习的步骤(以预测播放量为例)

eg: 预测YouTube明天观看人数

2.1 定义含未知参数的函数

  • 这一步骤在 Deep Learning 中通常表现为建立Model
  • 在这里定义了一个线性模型,要根据前一天的观看人数来预测后一天人数
  • w→weight(权重)b→bias(偏置)x→feature(特征)y→label(标签)

2.2 定义一个损失函数(Loss)

  • Loss is a function of parameters L(b,w)
  • Loss: how good a set of values is.

                       Loss :  L=\frac{1}{N}\sum_{n}^{}e_{n}

loss函数可自己定义,以下常见三类:MAE、MSE、交叉熵

  • e=\left | y-\hat{y} \right |     L is mean absolute error (MAE)平均绝对误差
  • e=(y-\hat{y} )^{2}   L is mean square error(MSE)均方误差
  • 如果y和y^​都是概率分布 → 交叉熵(Cross-entropy)当我们要比较两个概率分布之间的差异时,我们会使用交叉熵这一概念。
  • 误差曲面(error surface)
    用来可视化损失函数随模型参数变化而变化的一种方式。

2.3 优化 Optimization

                                w^{*},b^{*}=\arg \min _{w,b}L

  • argmin:使后面的公式最小的参数

使用梯度下降的方法进行优化

梯度下降 Gradient Descent

先拿一个参数举例,假设未知的参数只有 w,我们现在要找到一个 w 来使 Loss 最小。步骤如下:

   1. 随机找一个 w

   2. 计算微分是多少
                                 \frac{\partial L}{\partial w}|_{w=w^{0}}

                     

负数则增大w,正数则减小w,那么步伐多大呢?

                       w^{1}\leftarrow w^{0}-\eta \frac{\partial L}{\partial w}|_{w=w0}

  • ​​​​ \eta 是 learning rate(学习速率)(自己设定的),
  •  机器学习中需要自己设定的叫hypeparameters(超参数)

  3. 迭代更新 w

  • 何时停止:①达到了设定次数 ②微分算出来是0
  • 存在明显的弊端:全局最小值(global minima)、局部最小值(Local minima)

但全局最小值与局部最小值的问题并不是最主要的,最常见的。其实是学习率

       

如果带上参数 b,步骤相同

上面的三个步骤其实都是在进行训练!下面展示了该模型训练后其实在预测效果上并不好

\

2.4 改进1: 使用前一段时间的播放量来预测明天的播放量

那么我们要做的是改进模型,如何修改依旧来自于domain knowledge,下面展示了从通过前一天观看人数来预测改成了前一周、前28天、前56天,效果有所提升。

2.5 改进2: 采用非线性函数表达式

 model bias:线性模型太过简单、具有很大的限制

如何避免?用更复杂的函数

线性函数都可以用一段一段的函数组成,即可用常数+若干个蓝色函数表示。

分段线性曲线 Piecewise Linear Curve

sigmoid Function

                    y=c\frac{1}{1+e^{(-b+wx_{1})}}=c sigmoid(b+wx_{1})

改变参数,调整w、b、c来逼近Piecewise Linear Function

最终公式

2.5.1 定义未知参数的函数

新的函数表达式如下

 

矩阵形式

 

神经网络形式

 

2.5.2 定义损失函数(同上)

2.5.3 优化(同上)

将w每一个行,b,c,常数写为一个长向量,

使用梯度下降法(同上面)进行优化
可以将长向量分为很多短向量,依次用梯度下降法

 

梯度下降

每更新一个参数叫1update ,所有的batch算完叫1epoch

Sigmoid函数可以换成ReLU函数,两个都是Activation Function(激活函数),ReLU函数效果可能更好

 

2.5.3 改进3:多层神经网络

上面讲的是单层神经网络。而深度学习中的“深度”指的是多层的神经网络。了解了单层神经网络的基本原理之后,要想实现多层神经网络就很简单了,只需要将第i层的输出作为第i+1层的输入即可实现

我们来看看在这个案例中,使用多层的神经网络有什么效果吧

 

从上图我们可以看到,网络层数在1-3之间时,随着层数增加,测试集损失值在逐渐下降。但是,到第4层的时候,测试集的损失值反而上升了。我们把这种现象称为“过拟合”。

过拟合:模型过于复杂,学到了很多噪声,导致训练集loss下降,但是验证集loss上升

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐