深入浅出Pytorch--01

1. 2015年,ILSVRCC比赛中,ResNet错误率首次降到5%以下,战胜了人类。

2. 机器学习中数据的类型

图片
文本
音频
数据
RGB / RGBA
字符串
通用格式:16bit 振幅44.1kHz采样频率

图片
1. 包含了很多像素点,一个像素一个字节,值为0~255
2. 图像处理中,处理不同图片大小,resize可以用最近邻插值,双线性插值法。
3. 处理流程图

图片
数据增强
单张图片的归一化
数据集尺度的归一化

HSV: Hue(色相),Saturation(饱和度),V(Brightness Value)明度。Jittering就是在这三个值上做5~10%随机增减再返回RGB。

数据增强
随机剪裁Random Cropping
色彩Jittering
回归尺寸

文本:

文本
分词 Tokenization
去停词 Stop Words
正则化
词嵌入Embedding
  1. 分词: 连续文本根据标点空格分成单词列表。
  2. 去停词: 去掉出现频率大,没有啥意义的单词,比如吧,哦,了,it, of ,the …
  3. 正则化:文本统一化,英文–>中文
  4. 词嵌入:n个单词,每个单词对应m长的向量==>n*m矩阵。经验:m 约等于n的四次方根的1到10倍,然后转化成最近的2的幂。

3. 可以认为机器学习就是得到一种概率分布(联合分布 or 条件分布) P θ ( X , Y ) P_\theta\bold(X,Y) or P θ ( Y X ) P_\theta\bold(Y|X)

条件概率分布,也就是给定X数据集,得到你认为他们的标签们的概率分布。
联合概率分布,就是说 我得到的是 数据集和标签 粘连在一起,同为属性情况下的概率分布。

P ( X , Y ) = P ( Y X ) P ( X , Y ) d X P(\bold X,\bold Y) = \int P(\bold Y|\bold X) P\bold (\bold X,\bold Y)\mathrm{d}\bold X

4. 生成式模型(Generative Model)和判别式模型(Discriminative Model)

生成式模
判别式模型
机器学习模型
朴素贝叶斯, 隐马尔可夫, HMM
逻辑回归,条件随机场

生成式模型: 联合概率分布
判别式模型: 条件概率分布

5. 判别式模型虽然一般比生成式模型效果好,但是不能通过模型任意产生新的数据。

常识:

  1. 可以得到的信息多—> 熵就低。 因为,可以得到信息,那么就越有一定的规则,有序,即熵低。反之,无序,无新信息可获取,熵高。比如,分子运动高度无序,熵高。 一切事物趋于无序,趋于熵增。

  2. 概率密度分布相对集中, 即(可提供给我们的信息)多, 信息熵就小。 因为,如果概率密度集中,等同于我们知道一个点概率,我们就可以知道别的点很可能也出现。

  3. 证明
    H ( X ) = P ( X ) log P ( X ) d X H(\bold X) = - \int \bold P(\bold X)\log\bold P(\bold X)\mathrm{d}\bold X
    H ( X , Y ) = P ( X , Y ) log P ( X , Y ) d X d Y H(\bold X,\bold Y) = - \int \bold P(\bold X,\bold Y)\log\bold P(\bold X,\bold Y)\mathrm{d}\bold X \mathrm{d}\bold Y
    H ( Y X ) = P ( X , Y ) log P ( Y X ) d X H(\bold Y|\bold X) = - \int \bold P(\bold X,\bold Y)\log\bold P(\bold Y|\bold X)\mathrm{d}\bold X
    因此,
    H ( Y X ) = H ( X , Y ) H ( X ) H(\bold Y|\bold X) =H(\bold X,\bold Y) - H(\bold X)
    可以看到条件熵更低,能获得的信息更多。对我们更有益。

6.训练集,验证集, 测试集 划分

机器学习中可以考虑: 0.7, 0.2, 0.1
深度学习中可以考虑: 0.9 0.5, 0.5

7.避免过拟合

  1. 正则化(L1—> 拉普拉斯先验分布 L2–>高斯先验分布)
  2. Early Stopping
  3. Dropout 神经元
    总之从 数据集本身,正则,换模型复杂度上入手。

8. 激活函数

激活函数就是为了引入非线性!
三种常用
σ = σ ( x ) ( 1 σ ( x ) ) \sigma' = \sigma(x)(1-\sigma(x))
t a n h ( x ) = 1 t a n h 2 ( x ) tanh'(x) = 1 - tanh^2(x)

ReLu 取值(0,+inf) 导数 :(0, 1)
Sigmoid 取值(0,1) 导数(0, 0.25)
Tanh 取值(-1,1) 导数(0, 1)

回归任务: 线性输出任何值, 损失函数为MSE
分类任务: 线性输出后,加入非线性比如softmax层,再输出结果标签。 损失函数是Cross Entropy

softmax:
输入指数函数后,指数归一化,就是对应的概率了。

p i = e x i k = 1 N e x k p_i = \frac{e^{x_i}}{\sum_{k=1}^{N}e^{x_k}}
思考:
如果有个 e x k e^{x_k} 很大,大到超出了浮点数范围,
因此一般会这样:
p i = e x i x m a x k = 1 N e x k x m a x p_i = \frac{e^{x_i - x_{max}}}{\sum_{k=1}^{N}e^{x_k-x_{max}}}
x m a x = m a x ( x 1 , x 2 , . . . , x N ) x_{max} = max(x_1, x_2, ..., x_N)
思考:
softmax只有两类的时候就是sigmoid

9. 梯度消失和梯度爆炸

一开始权重过大, σ w > 1 \sigma'*w >1 ,导致爆炸
一开始权重过小, 反向传播后, 最前面几层,梯度消失。(sigmoid , tanh)

10.SGD, Momentum, AdaGrad, Rmsprop, Adam

SGD : 批次随机梯度下降

Momentum: w t + 1 = w t m t \bold w_{t+1} = \bold w_t - \bold m_t
m t = γ . m t 1 + α d L d w t \bold m_t = \gamma.\bold m_{t-1} + \alpha\frac{dL}{d \bold w_t}

AdaGrad: 类似于NLMS, 记忆梯度平方
G t = i = 1 t ( d L d w i ) 2 \bold{G_t }= \sum_{i=1}^{t}(\frac{dL}{d\bold w_i})^2
w t + 1 = w t α d L d w t G t + ϵ \bold w_{t+1} = \bold w_t - \frac{\alpha \frac{dL}{d\bold w_t}}{\sqrt{\bold G_{\bold t}+\epsilon}}

RMSpop: 不用全部记忆,用移动指数平均。
v t = γ v t 1 + ( 1 γ ) ( d L d w i ) 2 \bold{v_t} = \gamma \bold{v_{t-1}}+(1-\gamma)(\frac{dL}{d\bold w_i})^2
w t + 1 = w t α d L d w t v t + ϵ \bold w_{t+1} = \bold w_t - \frac{\alpha \frac{dL}{d\bold w_t}}{\sqrt{\bold v_{\bold t}+\epsilon}}

Adam:结合动量和速度

猜你喜欢

转载自blog.csdn.net/weixin_43702920/article/details/107151987