Datawhale X 李宏毅苹果书 AI夏令营

深度学习入门 (Datawhale X 李宏毅苹果书 AI夏令营)

Youtube Channel ---------- http://www.youtube.com/c/HungyiLeeNTU

Task1

相关概念

Regression

找一个函数F,输入预测相关数值的指数,F 能做到输出最终预测结果(数值 scalar)。

Classification

从设定好的选项中选择一个当作输出,这些选项叫做options (classes)。

e.g.  Playing go(阿尔法go)就是一个Classification, 它需要在19*19classes中选择正确的选项(下一步落子位置)。

Structure Learning

Create something with structure (image, document)

机器现在不止需要做选择,或输出数值;

机器现在需要学会画图,写文章…… ----> 让它学会创造这件事。


如何寻找预测结果呢?------ 分3步

以youtube浏览量举例 ------------------- 预测本频道观看人数

找到含有未知参数的函数-Fuction with Unknown Parameters
  • y = b + wx1    (Model)

(feature)  y: no.of views on 8/26,     x1: no.of views on 8/25

w(weight) and b(bias) are unknown parameters (learned from data)

找到Loss-Define Loss from Training Data

Loss is a function of parameters L(b, w) ;   Loss是一个输入Model参数的方程

Loss: how good a set of value is.

e.g. L (0.5k, 1)   y = b + wx1 =  ------> y = 0.5k + 1x1

How good it is?  -------> 计算Loss

  • label ---- 正确的数值(真实的)

  • 三种方式计算e

平均绝对误差MAE /

均方误差MSE /

Cross-entropy交叉熵

  • 等高线图 根据Loss画出的等高线图叫做 Error Surface

    Small L 更接近good值,在圆圈中心位置得到最佳Loss(w接近1,b 100多)

    ----->

    前一天的点赞数 差不多等于 后一天的点赞数

解最佳化问题-Optimization

w*, b* = arg minw,b L ----------> 找到最佳的一组w, b 使得Loss值最小

如何做?

Gradient Descent

  1. 先假设只有w参数,随机选择w的初始值w0;

  2. 计算w0的微分(也就是w0这个位置的斜率)

    斜率为正,w值减小;斜率为负,w值增大。

    ------> 也就是说,画切线;哪边低往,往哪边移。

  3. 那么,又有一个问题产生了,移动多少呢?

    斜率大,移动多一些;斜率小,移动少一些。

hyperparameters 是指 需要自己设定的值  <---- 在这里 learning rate是 hp

注:为什么出现负值?

因为Loss的这个方程是自己定义的,那么它就有可能出现任何形状;在真实情况中,如果定义了loss是预测值与正确值相减的绝对值(MAE)的话,就不会出现负数的情况。

 4. 持续更新w的位置,直到停止;

停止的情况有两种:

  • 更新的次数(自己设定的值-hyperparameters)到达上限(比如100万次);

  • w的微分结果 刚好为 0;

明明到global才是Loss的最小值,但这个图很大概率会在local点停止更新。

会出现 local minima / global minima 的问题?

-----> 但 它是一个假命题?Why?(留下疑问)

现在假设有w,b两个参数

将求w*的步骤推广到求w*, b*即可。

最后在这个真实案例中,计算的结果如下:

我们用已知的值去做函数的预测 ——> training data

那么unseen during training呢? 会发现Loss值变大了(没有那么good)

我们发现 预测值 几乎就是 正确值 的右移。

如果我们想要去解决 一个周期的预测 该如何做呢?

左边这几个 y = b + wx1 有一个共同的名字 叫做 Linear models

<------ 接下来,我们看如何让Linear models更好。

Task2

Linear models are too simple… we need more sophisticated modes.

y 与 x 的关系不只是正比关系吧。。。那么我们需要去考虑当 y 到峰值时,y 与 x 之间的关系就存在着一种转换,将其转换为反比关系。

We need a more flexible model !

如何写出更复杂的、有未知参数的函数呢?

在下图中,red curve 会等于 常数+全部 blue curve 相加  

------>  red curve = 常数 + 0+1+2+3 ;

注:从红色曲线的转折点,蓝色曲线设定与红色曲线相同的斜率。

Piecewise Linear Curves ====> 有多条线段所组成的(e.g. 红色的这条线);

意味着 More pieces require more blue curve.

=====> 也就意味着说,

我们只要有足够多的 blue curves,那么就可以变成任意连续的曲线。

如何表示出 blue curves 函数呢?- How to represent this function?

我们用曲线的方式来逼近它。

Sigmoid Function(S型)

当 -(b+wx1) 无穷小时,y 收敛于 c; 当 -(b+wx1) 无穷大时,y 收敛于 0;

-------> 所以我说,高数很重要呐,捡起来吧。

修改不同的 c / b / w 即可得到不同的 blue curves 。

所以整体的步骤是这样的:

  • blue curves(different Sigmoid function)

  • ----> Piecewise Linear Function

  • ----> Continues function

那么,我们可以得到上面图的结论:

New Model (More Features) 诞生!

上面是 y = 一个方程 ; 下面是 y = 多个方程相加 ;

线性代数 don't forget!

CT -----> C的转置

Questions:

  1. 暴搜 ------ 在参数巨多的时候 打咩!

  2.        sigmoid 方程可以有很多很多个 (fat fat fat)

解最佳化问题-Optimization

依旧是 Gradient Descent

注意区分:

每 更新 一次参数 -----> update

把所有batch看过一遍 -----> epoch

更新多少次 其实取决于 它的 batch size。

Rectified Linear Unit ( ReLU )

注意 ReLU 和 sigmoid function 的区别

Actually, ReLU 更好!

一直 fat 一定会达到最低的loss下限; 那么如何变得更好呢?

多做几遍  我们刚才做的事情?  <------ hyperparameters ;

Fancy name!

Neural  Network <------- 已“臭名昭著” ---------> 所以现在叫 “Deep Learning“

Neural  Network, which mimics human brain…….

Many layers means Deep!   =====> 那么我们把它多加 几层( layer )这件事 就是 deep!

DEEP? OR   FAT?  why we choose DEEP? ------- 小悬念

3 和 4 层对于未知事物的预测,居然 4层 更不好?why?

--------->   Overfitting       过拟合

--------->   在训练过的资料上结果有变好,但在没看过的资料上没有变好

老师卖关子啦!骗我们去点影片啦!

大家在2.26都去点video看,让2.26的机器预测完全不准!

(1、4layer更准,但整体都不准)

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

老师太风趣啦!

Task3

Training data  ---->  训练 model (3步)

Testing data   ---->  输入 x,测试输出的结果y;上传Kaggle

输入不同的 x ,输出不同的 y

Speech Recognition / Image Recognition / Speaker Recognition / Machine Translation

Kaggle 结果不满意的话,这样做。

训练 Model 步骤

Model Bias V.S. Optimization Issue

Function set 的范围还不够大,以至于没有包含进能够让你的 loss 变小的 function

----> Model Bias    

<---- 解决方式 Deep learning / More features (上一节)

注意 Training data 和 Testing data 的 loss 来区分到底是什么问题。

Training data 中,更深层的 networks 没办法比浅层的 networks 的loss值更低,这就意味着 既不是 Overfitting 的问题,也不是Model Bias(弹性小)的问题

---->  就是 优化 的问题    

<---- 问题所在:卡在local minima,gradient decent不给力  (解决方式 下一节)

Training data 中的 loss 低但在 Testing data 中的 loss 高

---->  就是 Overfitting 的问题 (数学原理 下下节)

Why Overfitting?

An extreme example(极端案例)

一无是处的 方程!

输入的 x 又出现在training data中,就能输出 y;不然就 随机输出一个值 ---->意味着这个training什么也没做,方程什么也没学到

但,它在 training data 中的 loss 可达到 0 ;可是,在 testing data 中 loss 会变得很大。

问题所在:

在这张图中,training data 随机 sample 出来3个点,导致没有被 training data 覆盖的地方会出现 “freestyle” , 这时如果 testing data 刚好未被训练资料所覆盖,就会导致 Large loss。

How to address? ---- 两种方式
第一种 在训练资料上动手脚。
More training data (作业cannot do)

寻找更多的资料

Data augmentation

需要根据 资料特性 以及 现在处理问题的理解 来选择合适的 augmentation。

比如说,

影像识别;    第一张为原图,第二张左右颠倒,第三张放大。这些都是在现实中有可能出现的、合理的 data augmentation 的做法。

但最后一张上下颠倒,很少出现且不合理;这会导致机器学到一些奇怪的东西。

Constrained model    第二种 限制模型,让它不要有那么大的弹性
假设我们的model一定是 二次曲线,这样function的形状就会受到很大的限制。

因为它只能是一下这些图形的样式。

减少参数 / 共享参数(CNN)

我们之前讲的是 Fully-connected network,是弹性比较大的networks。

而 CNN 是一个比较有限制(比较没有弹性)的架构;它可以针对影像的特性来限制模型的弹性,所以它在影像上会做得比较好。    CNN形成的集合会比较小,是包含在 Fully-connected network 中的。

Less features(运用得比较少)
Early stopping
Regularization
Dropout

但,也不能给模型太多的限制。

----> 比如说,一条直线(一次函数),机器找不到一条直线能刚好通过training data 的3个点。证明你的 function set 中根本包含能让 loss 变小的 function。

就    又回到了 Model Bias 的问题。。。

Bias-Complexity Trade-off

随着模型复杂度越来越高,training loss 越来越低;随着模型复杂度越来越高,testing loss 先降低后升高。

----> 复杂到一定程度,出现overfitting。

那么。。。我们选择一个 中庸 的模型?

Testing Set

public Testing Set / private Testing Set

上图向我们展示了,Training Set训练出来的Model3是最低的,但它也有可能对应着一个很废的Model(fk(x)),那么这样即使 public Testing Set 是好的,也不意味着它在private Testing Set 会变好。

一直用 public Testing Set 训练很废的模型是没有意义的,因为在 private Testing Set 中不会得到好的结果。

----> 少去看 public Testing Set(可以完全不看,直接用 Training data 去调)。

Best做题方式 ---- N-fold Cross Validation

看3种模型的 Avg mse 谁低,再把它用在 Training Set 上,最后训练出来的模型 再运用到 Testing Set上。

  • 28
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值