本章为第一讲的学习笔记:深度学习基本概念简介(上),视频链接,slides。
Main Idea:Machine Learning $\approx$ Looking for function
Different types of Functions
Regression (回归): The function outputs a scalar. 例如预测未来某个时刻PM2.5的数值。
Classification: Given options (classes), the function outputs the correct one. 例如区分邮件是否是垃圾邮件。Alpha Go本质上也是个Classification问题,输入为棋盘上黑子和白子的位置,输出是从可以落子的地方选择一个可以落子的地方。
Structured Learning:create something with structure (image, document)。输出不只是输出一个数字,还要产生一个有结构的物件,比如一张图片,一篇文章。
How to find a function?
写出一个带有未知参数的函数:先猜测一下我们打算找的这个函数的数学式长啥样,猜测不一定是对的,可以以后去修正(例如 $7$ 天一循环)。带有未知参数的函数被称为Model。
从训练数据中定义 Loss ,Loss 也是一个 Function ,输入为Model里面的参数,输出代表如果把这一组未知的参数设定某一个数值的时候,这个数值好还是不好。可以定义:$L = \frac{1} {N}\sum_{i}^{N} {e_i}$ ,其中 $e_i$ 代表第 $i$ 个真实值与预测值之间误差。$L$ 越大代表参数越不好,$L$ 越小代表参数越好。去试不同的参数可以得到等高线图,等高线图叫做 Error Surface 。
计算误差的方式:
- $e=|y - \widehat{y}|$ 对应的Loss叫mean absolute error (MAE)
- $e = (y - \widehat{y})^2$ 对应的Loss叫mean square error (MSE)
- If $y$ and $\widehat{y}$ are both probability distributions $\rightarrow$ Cross entropy
Optimization,解一个最优化问题。找参数使得计算的 $L$ 最小。用上标$*$来表示最好的参数。
如何找到最好的参数?使用方法:Gradient Descent,假设只有一个参数为$w$
在 Error Surface 的横轴上随机选取一个初始的点 $w_0$。
计算 $\frac{ \partial L } { \partial w}|_ {w = w_0}$ ,也就是切线斜率,如果斜率是负数,代表左边比较高,右边比较低,要想得到比较低的Loss,需要增大$w_0$;反之,左边比较低,右边比较高,需要减小$w_0$。增大和减小$w_0$的量取决于:斜率的大小(大则步幅大)以及 学习速率 (learning rate , $\eta$ ,自己设定,也叫 hyperparameters(需要自己设定的参数)),量为 $ \eta \frac{ \partial L } { \partial w}|_ {w = w_0}$,$w_1 = w_0 - \eta \frac{ \partial L } { \partial w}|_ {w = w_0}$。
Update $w$ Iterativey ,直到达到指定的计算次数(例100万次,也是一个hyperparameter) 或 斜率为$0$.
如上方法有一个缺点,即有多个斜率为$0$的点时,可能找不到最优解(找到的可能是local minima 而不是global minima)。但是,does local minima truly cause the problem?