1. 《动手学深度学习》之线性回归神经网络

0. 推荐资料

首先感谢在Datawhale的组织下,联合了李沐老师一起举办了本次的学习计划,在本次计划下也记录一下自己的学习过程。
本次学习教程的参考书籍:动手学深度学习
本次学习教程的参考视频:李沐老师b站视频

1. 前言

本书个人认为需要有线性、高等、概率论的基础,以及掌握一些基础的Pytorch框架知识,至少达到能看懂书中代码的程度。

2. 《动手深度学习》第3章----线性回归神经网络学习总结

线性回归及其损失函数、随机梯度下降

​       线性回归,最简单的理解就是初中学的y=ax+b,其中我们称a是x的权重,b称为偏置。现在我们拓展一下,现实生活中我们拿到的数据基本都是高维的,即有很多个特征,则可以进一步表示为 y = ω 1 x 1 + ω 2 x 2 + . . . + ω n x n + b y=\omega_1x_1+\omega_2x_2+...+\omega_nx_n+b y=ω1x1+ω2x2+...+ωnxn+b,也可以换一个表达式== y = ω T x ( i ) + b y=\omega^Tx^{(i)}+b y=ωTx(i)+b==,其中 ω T = [ ω 1 , ω 2 . . . ω n ] , x ( i ) = [ x 1 , x 2 , . . . , x n ] T \omega^T=[\omega_1,\omega_2...\omega_n],x^{(i)}=[x_1,x_2,...,x_n]^T ωT=[ω1,ω2...ωn],x(i)=[x1,x2,...,xn]T

​       看到上面的表达式,可以知道x是我们输入的,称为数据,我们的目的是找到一组参数 ω \omega ω和b来拟合数据,可以理解为找到一个最好的模型去拟合数据,得到的y称为预测值,记为 y ^ \widehat{y} y ,那么最终公式就变为: y ^ = ω T x ( i ) + b \widehat{y}=\omega^Tx^{(i)}+b y =ωTx(i)+b。我们都知道预测值与真实值之前总会出现误差,即 y ^ ≠ y \widehat{y}\not=y y =y,这时候就有了损失函数(loss function),损失函数能够量化目标的实际值与预测值之间的差距,通常线性回归最常用的就是平方误差,其公式为: l ( i ) ( ω , b ) = 1 2 ( y ^ ( i ) − y ( i ) ) 2 l^{(i)}(\omega,b)=\frac{1}{2}(\widehat{y}^{(i)}-y^{(i)})^2 l(i)(ω,b)=21(y (i)y(i))2,其中 y ^ ( i ) \widehat{y}^{(i)} y (i)表示样本i的预测值, y ( i ) y^{(i)} y(i)表示其相应的真实值。

在这里插入图片描述

      如上图所示,就可以很好地帮助我们理解损失函数,蓝色圆圈表示真实的值,黑线就是我们模型拟合的结果,可以看两者之间存在一定的距离,即误差(如果模型把每个点都连接起来了,称为过拟合),前面说过我们的目标是找到一组参数 ω \omega ω和b来拟合数据,找到这组参数 ω ∗ , b ∗ \omega^*,b^* ω,b,能最小化在所有训练样本上的损失均值,怎么找呢?其公式为
L ( ω , b ) = 1 n ∑ i = 1 n l ( i ) ( w , b ) = 1 n ∑ i = 1 n 1 2 ( ω T x ( i ) + b − y ( i ) ) 2 L(\omega,b)=\frac{1}{n}\sum_{i=1}^{n}l^{(i)}(w,b)=\frac{1}{n}\sum_{i=1}^{n}\frac{1}{2}(\omega^Tx^{(i)}+b-y^{(i)})^2 L(ω,b)=n1i=1nl(i)(w,b)=n1i=1n21(ωTx(i)+by(i))2 通过该公式找出一组参数 ω ∗ , b ∗ \omega^*,b^* ω,b能最小化在所有训练样本上的总损失。

​       梯度下降: 它通过不断地在损失函数递减的方向上更新参数来降低误差,换句话就是想办法使真实值和预测值之间差异最小,因此就需要确定优化的方向以及实际走一步要多长,最常用的方法就是小批量随机梯度下降:其思想是因为每次更新都需要计算训练集上所有的样本,耗费时间太长,那么就抽取一部分样本来更新参数,用数学公式表示如下图:
在这里插入图片描述

其中

  • ∣ β ∣ |β| β表示每个小批量中的样本数,这也称为批量大小**(batch size)**
    • batchsize不能太大:内存消耗增加;浪费计算资源,一个极端的情况是可能会重复选取很多差不多的样本,浪费计算资源
    • b也不能太小:每次计算量太小,很难以并行,不能最大限度利用GPU资源
  • η表示学习率(learning rate)。

常见的其他梯度下降策略有:

在这里插入图片描述

线性回归简单实现

这里咱偷个懒,直接粘贴李沐老师的代码了,有两个代码:

Softmax及其损失函数

     Softmax是用来解决分类问题的,一般在模型的输出层最后一层都会使用softmax,其思想是将多分类的结果以概率的形式展现出来,或者说你输入了一张猫的图片到模型,而模型有{猫,狗,鸡}三种类别,那么softmax会返回出三个类别的概率值(总和为1且每个类别不为负数),比如{0.8,0.1,0.1},然后选择概率最大的值并输出其类别:猫,到这里应该对softmax有一定了解了吧。
在这里插入图片描述

      Softmax定义如下
s o f t m a x ( X ) i j = e x p ( X i j ) ∑ k e x p ( X i k ) softmax(X)_{ij}=\frac{exp(X_{ij})}{\sum_{k} exp(X_{ik})} softmax(X)ij=kexp(Xik)exp(Xij)

      对数似然损失函数: softmax输出结果是对给定任意输入x的每个类的条件概率x。假设整个数据集{X,Y}有n个样本,索引i的样本有特征向量 x ( i ) x^{(i)} x(i)和独热标签向量 y ( i ) y^{(i)} y(i)组成,则将预测值与真实值进行比较
P ( Y ∣ X ) = ∏ i = 1 n P ( y ( i ) ∣ x ( i ) ) P(Y|X)=\prod_{i=1}^{n}P(y^{(i)}|x^{(i)}) P(YX)=i=1nP(y(i)x(i))
然后进行对数转化,

​ 其中,任何标签y和预测值 y ^ \widehat{y} y 的损失函数为: l ( y , y ^ ) = − ∑ i y i l o g y i ^ = − l o g y y ^ l(y,\hat{y})=-\sum_{i}y_{i}log\hat{y_{i}}=-log\hat{y_y} l(y,y^)=iyilogyi^=logyy^,该函数也通常被称为交叉熵损失(cross-entropy loss)。

在这里插入图片描述

3. 总结

      以上就是关于本书的第3章总结,后续会更新第4章的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学AI的小曾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值