深度学习入门
深度学习入门
入门路线:
前言
笔者目前研一在读,AI交叉专业,之前没怎么接触过深度学习,所以借此机会,记录一下自己学习深度学习的过程,既是记笔记的一个过程,也希望可以给有需要的朋友一点借鉴。学习资料为上文链接。
名词解释:
| 专有名词 | 解读 |
|---|---|
| Anomaly Detection | 异常检测 |
| Explainable AI | 可解释AI |
| Model Attack | 模型攻击 |
| Domain Adaptation | 领域自适应 |
| Network Compression | 模型压缩 |
| Life-long Learning | 长期学习 |
| Meta Learning | 元学习 |
| Few-shot Learning | 少样本学习 |
| threshold | 阈值 |
| discriminative | 判别 |
| generative | 生成 |
深度学习——李宏毅
ch1 机器学习与深度学习基本概念
Machine Learning = Looking for Function
Deep Learning是形如类神经网络的function
机器学习步骤:
- function with unknown (写一个函数,我们会根据自己已有的知识去假设函数,比如说我们查看数据的直方图,认为可能是个二次函数或一次函数)
- define loss from training data (定义损失函数)
- optimization (优化)
很多情况下,数据的分布是一个分段函数,我们并不知道每一段的函数应该如何去表示,而事实上,我们可以用同一个函数的不同参数去逼近一个分段函数

例如,我们想得到红色的函数,那我们可以用这些蓝色的函数叠加起来从而逼近红色的函数
而蓝色的函数来自这里Sigmod函数



这时我们的问题就变为了如何得到合适的参数来求解上述方程,我们就可以采用梯度下降的方法来求解上面的未知数。求解完成后,假设我们得到了合适的参数,那么我们如果想验证我们的计算结果就可以采用下面的计算步骤
(问题背景:探究当天点赞量与过去点赞量的关系,这里我们假设当天的点赞量与前三天的点赞量有关,那么输入x1,x2,x3分别代表前三天的点赞量。)

优化注意事项:
我们刚刚提到可以通过计算Loss来更新参数,传统更新loss的方式是计算所有数据的差异,但是我们今天的做法是将所有的数据随机分成N个batch,每次更新只计算一个batch。一个epoch要更新N次参数。(epoch指的是训练的轮数)
我们这里提到的batch也好、epoch也好,都是自己设置的,像这样的参数我们称为超参数。(hyperparameter)
ch2 pytorch教程
- pytorch是什么
深度学习框架,具有以下两个优点
- 高维度的矩阵运算可以交给GPU
- 自动的梯度计算
- Dataset & DataLoader

1 | |

- pytorch定义神经网络
1 | |
- 深度学习训练过程
1 | |
- 第一次作业代码
1 | |
1 | |
ch3 Google Colab教程
这一部分暂时跳过,可以用自己实验室的服务器
选修——深度学习
发展历史
- perceptron(感知机) linear model
- perceptron has limitation
- multi-layer perceptron
- do not have significant difference from DNN today
- backpropagation
- Deep = Many hidden layers
反向传播
这一部分是教怎么计算微分,从而更新参数
预测神奇宝贝
避免过拟合的方式:正则化
使用正则化,帮助我们获得更小的参数
α越大,我们的function越平滑
CNN
spatial transformer layer(can also transform feature map)
cnn is not invariant to scaling and rotation
RNN
- slot filling
RNN存在memory
(随着时间的推移,早期的记忆会衰减)