赞
踩
感谢:
Regression 回归:输出标量
Classification 分类 :输出类别,如猫狗分类
Structured Learning 结构化学习,结构化输出,如图像、文档等
1. 使用三部进行数据的训练
建立未知参数函数
y
=
w
x
+
b
y = wx + b
y=wx+b
先建立模型:y = b + w x 1 y=b+wx_1y=b+wx ,其中x xx是已知的特征feature;w ww是权重weight,b bb是偏置bias,都是未知的参数,需要从数据中学习。
通过训练数据定义损失L
对每一个训练样本,计算模型输出值和真实值(label)之间的误差(e),L(b,w),L越小说明参数越好。
不同的误差计算方式:MAE / MSE / Cross-entropy
L
=
1
/
N
∗
Σ
e
n
L = 1/N* \Sigma e_n
L=1/N∗Σen
e
=
∣
y
−
y
^
∣
e =| y-\hat{y}|
e=∣y−y^∣
优化Optimization
优化目标是找到使L最小的参数,即求解
w
∗
,
b
∗
w^*,b^*
w∗,b∗
优化方法:梯度下降gradient descend
1. 当只有一个参数w时,随机选取一个初始
w
0
w^0
w0
然后计算他的梯度,移动w位置受学习率learning rate和斜率决定,学习率是提前设定的超参数
计算w对Loss的微分
w
1
=
w
0
−
η
∗
∂
L
∂
ω
∣
w
w^1 = w^0 - \eta*\frac{\partial L}{\partial \omega}|_w
w1=w0−η∗∂ω∂L∣w
反复同样操作进行多次迭代更新w(停止条件:迭代次数达到阈值或微分趋近于0即到达局部最优点
经过训练可以得到
w
∗
w^*
w∗=0.97,
b
∗
b^*
b∗=0.1k,即通过2017-2020的数据得到了函数关系
自此,三步训练任务完成
4. 使用得到的函数进行测试2021年的数据情况
以上这样的模型称为线性模型
2. 从线性模型到神经网络
线性模型太过简陋,无论如何调参都无法匹配出红色这种折线,因此我们需要使用一个更复杂更有弹性的函数来表示
可以看到,通过使用多个piecewise function可以拟合出红色函数
任何分段线性函数都可以如此通过一个常值加一堆蓝色的折线拟合,不是分段线性函数也可以近似成这样
而这条蓝色的线可以用sigmoid函数来表示
通过更改c,b,w的数值,可以拟合出不同形式的图形
因此,通过更改w,b,c拟合出不同图形,进而相加得到红色函数
模型也因此有了更多的参数
用直观的方法解释这个模型
同时也可以用矩阵表示
整个流程就可以用这个图来表示
返回机器学习框架,得到新的函数关系
使用新的模型进行后续优化,和原先方式相同,只是参数数量增加
在实际运行中不会一次性使用所有数据进行梯度更新,而是将数据分成多个batch,每次拿出一组batch进行更新,将所有数据使用一次称为一个epoch
从sigmoid到relu
hard sigmoid可以看成是两个relu加起来
因此sigmoid也可以换成relu
相同情况下relu的效果更好!
深度神经网络:实验证明加层后效果会更好
一个激活函数就是一个神经元neuron,很多的neuron就组成了neural network神经网络,neuron层叫layer,除输入输出以外的层叫hidden layer
PyTorch是什么
PyTorch深度神经网络训练流程图
Tensor:张量,可理解成多维数组
Data Type
Tensor的形状shape(维度dim)
创建Tensor
常用操作
squeeze()
去掉长度为1的维度unsqueeze()
新增长度为1的维度squeeze
和unsqueeze
这两个不是互逆的命令,squeeze
是只有序号是1维时才会删除,而unsqueeze
是在序号维度添加维度transpose()
转置cat()
串接如何计算梯度?
创建数据集,加载数据
训练时shuffle=True,测试时shuffle=False
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。