深度学习-【2020版】【深版】
- 1.Machine Learning Introduction(2020)
- 2.Regression - Case Study
- 8.Graph Neural Networks
- 10. Semi-supervised Learning
- 11.Explainable AI
- 12.Adversarial Attack
- 13.Network Compression
- 14. Seq2Seq
- 15. Unsupervised Learning
- Transformer
- Generative Model
- AUTO-ENCODER
- Life Long Learning(LLL)
- Meta Learning(元学习)
1.Machine Learning Introduction(2020)
机器学习就是自动找函数式
2.Regression - Case Study
预测宝可梦cp值
以预测宝可梦cp值为案例学习回归
step1 定义模型集合
y = f ( x ) = w ⋅ x + b y=f(x)=w·x+b y=f(x)=w⋅x+b
step2 评价模型
通过损失函数Loss来评价模型好坏
step3 选出最佳模型
梯度下降
L = 1 / 2 ( y − f ( x ) ) 2 L=1/2(y-f(x))^2 L=1/2(y−f(x))2
w ← w − η ⋅ d L d w w\leftarrow w-\eta·\frac{dL}{dw} w←w−η⋅dwdL
b ← b − η ⋅ d L d b b\leftarrow b-\eta·\frac{dL}{db} b←b−η⋅dbdL
η \eta η被称为步长,即学习率
回归模型中不存在局部极小值
正则化
L = 1 / 2 ( y − f ( x ) ) 2 + λ ∣ ∣ w ∣ ∣ 2 L=1/2(y-f(x))^2+λ||w||^2 L=1/2(y−f(x))2+λ∣∣w∣∣2
bias&variance
一般来说
简单的模型(左侧)有大的bias和小的variance。
复杂的模型(右侧)有小的bias和大的variance【瞄得越来越准,但误差越来越大】。
欠拟合(underfitting): 误差来源于bias–模型不能很好地拟合训练数据。
解决方法:重新设计模型(欠拟合时,采集更多数据是没用的)
1.增加更多的特征作为输入
2.选择更复杂的模型
过拟合(overfitting): 误差来源于variance–模型拟合了训练数据,但在测试数据上有很大误差。
解决方法:
1.更多数据–采集or生成
2.正则化
理想结果:平衡bias和variance,得到一个较好的模型。
交叉验证
通过交叉验证来用测试集模拟真实世界的数据,取得在真实世界更好的效果
为防止划分的验证集数据分布奇怪,可采用n折交叉验证
8.Graph Neural Networks
Graph Neural Networks即GNN,训练数据有图的结构特征,我们可以用GNN进行分类和生成任务,比如判断化学分子其是否会导致突变、生成可以对抗病毒的某种化学分子。
使用GNN时可能遇到的问题:
- 如何通过结点间的信息帮助模型
- 图中可能包含大量结点,数据集非常大
- 大量结点都是没有label的
GNN的两种思路
类比CNN,我们可以通过相邻节点来表示当前节点的特征。那么就要将卷积这个操作推广到GNN模型中,有两种方法
- Spatial-based Convolution
Generalize the concept of convolution(corelation) to graph. - Spectral-based Convolution
Back to the definition of convolution in signal processing.
Spatial-based Convolution
先介绍两个术语:
Aggregation:用 neighbor feature update 下一层的 hidden state。即在某一个layer中用某node及其neighbor的feature得到下一个layer中该node的feature。
Readout:把所有 nodes 的 feature 集合起來代表整個 graph。即汇总整个图的信息,最终得到一个特征来表示这整个图(Graph Representation)。
NN4G (Neural Networks for Graph)
输入层为原始数据,需要先embedding变成方便处理的数据(eg. h 3 0 = w ‾ 0 ⋅ x 3 h^0_3=\overline{w}_0·x_3 h30=w0⋅x3),处理后为hidden layer 0。
接下来就是aggregation,以 v 3 v_3 v3的hidden layer 0->hidden layer 1为例, h 3 1 = w ^ 1 , 0 ( h 0 0 + h 2 0 + h 4 0 ) + w ‾ 1 ⋅ x 3 h_3^1=\widehat{w}_{1,0}(h_0^0+h_2^0+h_4^0)+\overline{w}_1·x_3 h31=w
1,0(h00+h20+h40)+w1⋅x3
readout:每个hidden layer的节点加起来mean,然后做个transform(转换)
DCNN (Diffusion-Convolution Neural Network )
aggregation: h m k = w m k M E A N ( d ( m , ⋅ ) = k h_m^k=w_m^kMEAN(d(m,·)=k hmk=wmkMEAN(d(m,⋅)=k 权重乘上与节点m有k个距离节点的mean
readout:
DGC (Diffusion Graph Convolution)
和DCNN基本一致,只有readout略有差别,DCNN是拼接,DGC是相加
Spectral-based Convolution
跟信号处理类似,其实没怎么看懂QAQ
10. Semi-supervised Learning
Supervised Learning有监督学习,其中每组数据包括算法的输入与输出(标签)。
Semi-supervised Learning半监督学习,其中部分数据有标签而大量数据没有标签。
半监督学习可以分为以下2种情况
- Transductive Learning
unlabeled data is the testing data,只使用testing data中的feature,并没有使用testing data中的label,所以并没有cheating。
适用于已知testing data的情况,比如kaggle比赛。 - Inductive Learning
unlabeled data is not the testing data,完全不使用testing data。
适用于testing data未知的情况,这是大多数情况。
为什么需要半监督学习
其实缺的并不是数据,缺少的是有标签的数据。利用这些大量的没有标签的数据进行学习,这是非常有价值的。
为什么半监督学习有用
The distribution of the unlabeled data tell us something:无标注数据的分布可以告诉我们一些东西
半监督学习往往伴随着假设,而该假设的合理与否决定了结果的好坏程度。如上图所示,在猫狗图片分类中一只狗被认为是一只猫,这很可能是由于这2张图片的背景都是绿色,因此假设的合理性至关重要。
Semi-supervised Learning for Generative Model
如下图所示,在Supervised Generative Model(有监督生成模型)中,得到 P ( C 1 ) , P ( C 2 ) , μ 1 , μ 2 , Σ P(C_1), P(C_2),μ^1,μ^2, Σ P(C1),P(C2),μ1,μ2,Σ后,就可以计算出 x x x属于类别 C i C_i Ci的概率 P ( C 1 ∣ x ) P(C_1|x) P(C1∣x)。
基于有监督生成模型,当有了无标签数据之后(下图中绿色圆点),我们会明显发现有监督生成模型中的 P ( C 1 ) , P ( C 2 ) , μ 1 , μ 2 , Σ P(C_1), P(C_2),μ^1,μ^2, Σ P(C1),P(C2),μ1,μ2,Σ并不够正确,比如2个类别的分布应该接近于下图中虚线圆圈、先验概率 P ( C 1 ) P(C_1) P(C1)应该小于 P ( C 2 ) P(C_2) P(C2),所以应该使用无标签数据重新估计 P ( C 1 ) , P ( C 2 ) , μ 1 , μ 2 , Σ P(C_1), P(C_2),μ^1,μ^2, Σ P(C