Machine Learning ≈ Looking for Function(找一个函式)
Deep Learning 的函式是一个类神经网络
- 输入可以是向量,矩阵(图片),序列(文章)
- 输出可以是
数值(这种任务叫regression)
类别(classification)
文章 (structured Learning)
机器如何找到函式
supervised learning(有监督学习)
tarining data 是有标注的资料
self-supervised learning
pre-train:使用unlabled images
Pre-trained Model(也成为Foundation model) 和 Downstream Tasks就类似于Operating Systems 和 Applications
A case study:根据一个频道过往的观看人数预测某天的观看人数
本次课全部使用Gradient Descent(梯度下降)
我们称最好的未知参数为w*,b*
①随机选取一个初始点
②计算微分:
若为正值,则向增大w的值的方向移动
若为负值,则向减小w的值的方向移动
移动的大小由两个参数来决定:微分大小(斜率大小),learning rate(学习速率)
- learning rate由自己设定,这种由自己设定的参数叫做hyperparameters
上述步骤都是在training data上做的,我们实际关注的是在testing data上的表现
只考虑前一天的观看人数所得loss:
考虑前7天的观看人数:
考虑前28天的观看人数:
考虑前56天的观看人数:
上述模型(函式)都称为Linear Models
Linear Model太过简单,并不能表示复杂的曲线,所以我们需要更有弹性的模型(flexible model)
我们使用常数+许多蓝色函式(Hard Sigmoid)来表示复杂的折线
我们可以用很复杂的折线来逼近曲线,这表示我们可以使用constant和许多蓝色函式来表示复杂的曲线
那么如何表示蓝色函式呢?我们使用Sigmoid Function来表示它
所以复杂的折线就可以使用许多Sigmoid Function来表示
y = b + ∑ i c i s i g m o i d ( b i + w i x 1 ) y = b + \sum_{i}c_isigmoid(b_i+w_ix_1) y=b+∑icisigmoid(bi+wix1)
上述Function只考虑了一个feature( x 1 x_1 x1),还可以使用更多的feature来写出函式:
y = b + ∑ i c i s i g m o i d ( b i + ∑ j w i j x j ) y = b + \sum_{i}c_isigmoid(b_i+\sum_j w_{ij}x_j) y=b+∑icisigmoid(bi+∑jwijxj)
模型y的图示
假设模型中有3个feature,3个sigmoid
function with unknown parameters
Loss现在是关于 θ \theta θ的函式,用来评价一组 θ \theta θ的好坏
找出可以让loss最小的一组 θ \theta θ,我们称这组 θ \theta θ为 θ ∗ \theta^* θ∗
①随机取初始 θ 0 \theta^0 θ0
②计算 θ 1 \theta_1 θ1, θ 2 \theta_2 θ2, θ 3 \theta_3 θ3…对Loss的微分
sigmoid也可以用ReLU表示
我们可以继续改写模型,让参数通过多层激活函数
我们将每一层激活函数称为hidden layer
在之前我们说只要sigmoid函数足够的多,那么我们就可以逼近所有复杂的曲线,但是Deep Learning为什么不将所有的sigmoid函数排成一排,而要使用很多层hidden layer呢?