李宏毅深度学习2021(P1-P9)

机器学习基本概念

机器学习的任务包括:回归、分类、结构学习(structure learning)

机器学习步骤

  1. Model——Function with Unknown Parameters

    模型函数的形式依赖于领域知识
  2. Define Loss from Training Data
    Error Surface(等高线图)
    loss是自己定义的函数,可以是负的
  3. Optimization

Gradient Descent(优化方法)


梯度下降停止:自行设置epoch;到达梯度为0的点就停止
Gradient Descent有local minima的问题

线性模型

  1. 普通线性模型的表示力太弱
  2. piecewise linear curves=constant+sum of a set of blue piecewise functions(下图中蓝色的函数)
    分段线性曲线=常数+一组分段函数

    上图中的 blue function为hard sigmoid,可用sigmoid近似hard sigmoid.

    在这里插入图片描述
    在这里插入图片描述



loss

优化



以此类推直到你不想做,或者是你算出来的这个 Gradient,是 0 向量 是 Zero Vector,导致你没有办法再更新参数為止,不过在实作上你几乎不太可能,作出 Gradient 是 0 向量的结果,通常你会停下来就是你不想做了.

分batch优化



sigmoid和relu统称激活函数,后者效果较好,也更常用。

deep的意义

引出问题,日后讲解:

反向传播

To use gradient descent effectively, we use back propagation.

chain rule



在反向传播中运用链式法则,可以求出损失函数对每一层参数(w, b)的导数,从而进行梯度下降,更新每个参数。

pytorch了解

  1. An open source machine learning framework.
  2. A python package that provides two high-level features:Tensor的计算,tensor这种数据类型类似于numpy的ndarry,但可用于GPU加速运算;具有tape-based autograd system,计算梯度,便于网络的参数更新。

  3. 课件链接:https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/hw/Pytorch/Pytorch_Tutorial_1.pdf
  4. pytorch的方法的参数中有,位置参数和关键字参数,前者无需指定参数名,后者需要指定
  5. 运行代码时常见错误:https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/hw/Pytorch/Pytorch_Tutorial_2.pdf
    mismatched tensor type:例子中给的label是一个整数,torch会将其解析成float类型,但是标签不能是浮点数,所以需要将label转化成torch.long类型。

HomeWork1

  1. gdown 作为一个Python的工具包,可以使用写代码的方式进行下载。https://blog.csdn.net/zhou_438/article/details/116399508
  2. 代码讲解博客
myseed = 42069  # set a random seed for reproducibility
torch.backends.cudnn.deterministic = True  #这段代码保证每次运行网络时,相同的输入具有相同的输出
torch.backends.cudnn.benchmark = False
np.random.seed(myseed)
torch.manual_seed(myseed)
if torch.cuda.is_available():
   torch.cuda.manual_seed_all(myseed)
  1. pred.detach() 使用该函数可以不去计算pred的梯度

模型优化

  1. 如何判断loss不下降是model弹性不够还是优化没有做好的问题?
  2. overfitting
    training data上面的loss小,testing data上的loss大
    关于overfitting的讲解:https://blog.csdn.net/zhaoliguaner/article/details/119742915
  3. mismatch
    mismatch它的原因跟overfitting,其实不一样,一般的overfitting,你可以用搜集更多的资料来克服,但是mismatch意思是说,你今天的训练集跟测试集,它们的分佈是不一样的~这时增加训练集没有用
    如何解决:作业11讲解
    判断是不是mismatch:那我觉得知不知道是mismatch,那就要看你对这个资料本身的理解了,你可能要对你的训练集跟测试集,的产生方式有一些理解,你才能判断说,它是不是遇到了mismatch的状况。

优化中遇到的问题

loss不下降,gradient=0,及解决思路

  1. critical points
  2. batchsize
  3. 自适应学习率
  4. batch normalization

分类

Classification with softmax

y i ′ = e x p ( y i ) ∑ j e x p ( y i ) y_i'=\frac{exp(y_i)}{\sum_j exp(y_i)} yi=jexp(yi)exp(yi)

  1. Soft-max的作用:Normalized,让 y₁’ y₂’ y₃’,变成0到1之间,还有和為1;
    它会让大的值跟小的值的差距更大
    Soft-max的输入,往往就叫它logit
  2. 两个class用sigmoid,跟soft-max两个class是等价的

loss of classification——CE

  1. 交叉熵损失最小时,均方误差损失也会最小~
  2. 最小化交叉熵损失等价最大化似然估计
  3. 在pytorch裡面,Cross-entropy跟Soft-max,他们是被绑在一起的,他们是一个Set,你只要Copy Cross-entropy,裡面就自动内建了Soft-max
    2017年讲解分类的概述
  4. Cross-Entropy比MSE更适合做损失函数。损失函数的选取也会影响optimization的难度,CE使得难度变低。

逻辑回归——用于分类

由于分类可看作伯努利分布,最大化分类经过数学推演,等价于最小化交叉熵,从而引出交叉熵损失函数
前者分类,后者回归

逻辑回归和线性回归参数更新的形式是一样的,区别在于:对于逻辑回归,target y n ​ y^n​ yn 是0或者1,输出是介于0和1之间。而线性回归的target可以是任何实数,输出也可以是任何值。
逻辑回归的boundary界限是一条直线~

为什么逻辑回归不用MSE作损失函数(分类问题不用MSE做损失函数)


在距离目标类别比较远的时候,CE具有较大损失,MSE的损失依旧很小~

判别模型VS生成模型

判别模型:直接用梯度下降法找出w和b;生成式模型自己先脑补了一个分布。
先验和类相关的概率可以从不同的来源估计。在这里插入图片描述

多类别分类

  1. 指数簇分布的最大熵等价于其指数形式的最大似然界。二项式的最大熵解等价于二项式指数形式(sigmoid)的最大似然,多项式分布的最大熵等价于多项式分布指数形式(softmax)的最大似然,因此为什么用sigmoid函数,那是因为指数簇分布最大熵的特性的必然性。
  2. 最大熵的角度理解指数分布族:
    最大熵原理认为,学习概率模型时,在所有的概率模型中,熵最大的模型是最好的模型。指数族分布满足最大熵原理,在满足约束条件下,如果没有更多的信息,则那些不确定的部分概率相等时熵最大。就是说在满足已知事实(约束)的情况下指数族分布的熵最大。(离散型)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值