线性模型可以看做是单层神经网络
神经网络源于神经科学
平方损失: l ( y , y ^ ) = 1 2 ( y − y ^ ) 2 l(y, \hat y) = \frac12(y-\hat y)^2 l(y,y^)=21(y−y^)2,其中 y y y是真实值, y ^ \hat y y^是估计值
注:乘 1 2 \frac12 21的目的是求平方的导数的时候,可以消除2
收集一些数据点来决定权重和偏差的值,这些数据点就是训练数据,通常越多越好。
- 线性回归是对 n n n维输入的加权,外加偏差
- 使用平方损失来衡量预测值和真实值的差异
- 线性回归有显示解(下面讲的其他模型都没有显示解,因为机器学习用来解决的是NP complete问题)
- 线性回归可以看作是单层神经网络(最简单的一种神经网络)
当模型没有显示解的时候可以用梯度下降求解
梯度下降方法的步骤:
挑选一个初始值 w 0 \bold{w_0} w0;
重复迭代参数 t = 1 , 2 , 3 t=1, 2, 3 t=1,2,3(如下图):
w t = w t − 1 − η ∂ l ∂ w t − 1 \bold w_t = \bold w_{t-1}-\eta\frac{\partial l}{\partial {\bold w_{t-1}}} wt=wt−1−η∂wt−1∂l
实际中很少直接使用梯度下降,深度学习中最常见的梯度求解版本:小批量随机梯度下降
原因:在整个训练集上算梯度太贵了(一个深度神经网络模型可能需要数分钟甚至数小时)。
所以,随机采样 b b b个样本 i 1 , i 2 , … , i b i_1, i_2, \dots, i_b i1,i2,…,ib来近似损失:
1 b ∑ i ∈ I b l ( x i , y i , w ) \frac{1}{b}\sum_{i\in I_b} {l(\bold x_i, y_i, \bold w)} b1i∈Ib∑l(xi,yi,w)
其中, b b b是批量大小,是另一个重要的超参数(很大时,近似很精确;很小时,近似不是那么精确,但是计算很容易)
- 梯度下降通过不断沿着反(负)梯度方向更新参数求解
- 小批量随机梯度下降是深度学习默认的求解算法
- 两个重要的超参数:批量大小和学习率
跟着李沐老师视频,总结了里面不理解的一些知识点:
同样跟着李沐老师视频,总结了里面不理解的一些知识点:
Softmax是一种分类方法
注: o y o_y oy的值要远大于其他 o i o_i oi的值,这里有一个阈值 Δ \Delta Δ,至于 o y o_y oy值本身的大小,并不是太关心
注:exp指数函数的好处:不管什么值,都可以变为非负
注: y i y_i yi除了真实类别的值为1,其他的都为0,所以可以写为第二个等号后面的内容:真实的类别的预测的值 y ^ y \hat y_y y^y的log值取负。
也即对分类问题来讲,不关心对于非正确类的预测值,只关心对于正确类的预测值的置信度要多大。
注:将 l ( y , y ^ ) l(\bold y, \hat {\bold y}) l(y,y^)展开求导即可得到梯度公式
- Softmax回归是一个多类分类模型
- 使用Softmax操作子得到每个类的预测置信度
- 使用交叉熵来衡量预测和标号的区别
数据读取相关的part,跟着李沐老师视频即可。
从零开始实现和简洁实现视频讲解很清楚,还没有完全理解,后面需要再看一遍
参考
[1] Python绘图问题:Matplotlib中%matplotlib inline是什么、如何使用?
[2] 动手学深度学习PyTorch版B站李沐老师视频列表
[3] 动手学深度学习 (第二版)
[4] Datawhale组队学习