Machine Learning - 1
总结:Machine Learning ≈ Looking for Function
focues on: Deep Learning Basic
types of Machine Learning:
- Regreesion(输出是实数:房价预测)
- Classification(输出是离散值:垃圾邮件识别)
- Structured Learning(输出是结构性内容:序列、图片…)
基础模型:Linear Model
Linear models Training steps:
-
Create Function with Unknown Parameters
$$ \require{enclose} y = b + wx \quad \enclose{circle}{1} \\ a = c \quad \enclose{circle}{2} \\ \text{b:bias w:weight} \quad \enclose{circle}{3} $$ -
Define Loss from Training Data:how good a set of values is. Loss Function:$L(b,w)$.
$$ \require{enclose} \begin{align} e_n &= |y_n - \hat{y}_n| \quad \text{mean absolute error(MAE/均绝对值差)} \quad \enclose{circle}{1} \\ \text{or} \quad e_n &= (y_n - \hat{y}_n)^2 \quad \text{mean square error(MSE/均方差)} \quad \enclose{circle}{2} \\ L(b,w) &= \frac{1}{N} \sum_{n=1}^{N} e_n \quad \enclose{circle}{3} \end{align}$$ -
Optimization
$$w^*,b^* = arg min_{w,b} L$$Gradient Descent
a. Pick randomly an initial value $w^0$, $b^0$
b. Compute
$$ \require{enclose} \begin{align} \frac{\delta L}{\delta w} |_{w=w^0} \quad \enclose{circle}{1} \\ \frac{\delta L}{\delta b} |_{b=b^0} \quad \enclose{circle}{2} \\ w^1 = w^0 - n \frac{\delta L}{\delta w}|_{w=w^0} \quad \enclose{circle}{3} \\ b^1 = b^0 - n \frac{\delta L}{\delta b}|_{b=b^0} \quad \enclose{circle}{4} \\ \text{说明:n 表示学习率,是一个 hyperparameter} \quad \enclose{circle}{5} \end{align}$$c. Update $w$, $b$ iteratively
-
总结
`疑惑点1:梯度函数和方向导数是如何确定梯度是最大的变化方向?
解答:(泰勒公式与拉格朗日中值定理)。查询了很多资料只是单纯的套入公式,这几个定理日后再深入学习,现在有点不好理解。`
1.梯度算出来的就是方向导数中变化最快的,沿着梯度增高最快,反着梯度方向减少越快; 2.泰勒公式展示为什么一个曲线函数可以用多项式函数表示。
参考资料:1.Dr. Trefor Bazett:Directional Derivatives 2.马同学:解释泰勒公式
疑惑点2:为什么多features是$w_1x_1+w_2x_2$这种一阶相加的模型呢?
解答:概括就是为了简单。泰勒一阶展开($x$)简单,相加性假设($w_1x_1+w_2x_2$)也简单。这个是拿来学习的,真实情况往往不是这样的,因为$x_1$,$x_2$互相之前可能存在协同、抑制等作用。
机器学习框架(ML framework):Other Models(sigmoid/ReLU)
总结就是:goal curve = constant + sum of piecewise linear curves
Sigmoid Function
goal curve = constant + sum of sigmoid function
n sigmoid and j features:
向量表示:
疑惑点3:为什么多个features的x_j是放入sigmoid函数内部的呢,而不是一个sigmoid表示一个feature?
解答:暂时不太理解
ReLU
Rectified Linear Unit(ReLU) 可以用两个 ReLU 函数曲线表示一个hard sigmoid 函数曲线。所以可以用两倍数量的 ReLU 来替换 sigmoid 函数。
训练步骤
1.定义机器学习的框架的模型:
通过向量简化表示如下:
2.定义损失函数 L($\theta$):
总结就是 Loss $L = \frac{1}{N}\sum_{n=1}^N{e_n}$
3.最优化(Optimization),即寻找
$\theta^* = \operatorname{arg} \operatorname{min}_{\theta}L$
3.1. Pick randomly initial values $\theta^0$
3.2. 通过梯度下降寻找更好的的$\theta^1$
3.3. 然后计算$\theta^1:$
…
3.4. 通过 3.2和3.3迭代,最终计算出满意的 $\theta$,即 $\theta^*$
其他
- Overfitting:训练的 Loss 低(训练效果好),但是没训练的 Loss 高(实际效果不行)
- 实际训练时一般会按照 batch 进行参数更新,一个 batch 的数据训练完更新一次参数
- 全部训练数据训练为一个 epoch
- hyperparameters 表示自己自定义的参数,比如学习率 n、features 的数量、sigmoid 的数量、训练 batch 的大小、训练周期epoch 的大小和 layer 的层数属于 hyperparameters
- Neuron: 一个 sigmoid 或者 ReLU 就是一个神经元
- Neural Network: 多个 neuron 串联组成的 model 就是神经网络。
- Layer(hidden layer):把 $\sigma$ 输出作为 x,即作为新的 $\sigma(b+wx)$ 中的 x,就嵌套多了一层。
- Deep Learning:多层的 Hidden Layer 就叫做深度学习
- Deep Learning 分层:
- input layer
- hidden layer
- output layer
思考
- why $b+w_1x_1+w_2x_2+…$ for features?
- How many layers?
- How many neurons for each layer?
- Can the structure be automatically determined?
- Why “deep” neural network not fat “nerual” network?