http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML19.html
未来要做的
- 机器知道自己不知道:Anomaly Detection(异常检测)
- 机器知道自己为什么知道
- long life learning
- Meta-Learn / learn-to-learn
- few-shot learning
- zero shot learning (没有训练样本,比如说要识别熊猫,只告诉机器黑白的熊,有黑眼圈)
- 增强学习 (能不能学快一点)
- 神经网络压缩(参数二元化(+1, -1)、减少神经元)
Anomaly Detection
x与训练数据的相似程度- 应用:刷卡行为、网络入侵识别、癌细胞检测
有classifier的情况下
已经有分类器的情况下,在输出分类标签的同时,在输出一个置信值,用一个阈值来区分 置信值可以用分类概率最大值或者计算熵 神经网络输出添加置信值 如何判断系统的好坏?如何确定lambda? ROC曲线等等可能存在的问题:有的东西比猫更猫 其他思路
没有classifier的情况
image.png 举个栗子,这是一个游戏中玩家的属性(说垃圾话的频率,无政府状态下发言的频率),数据稀疏的地方更有可能是不正常的玩家(小白、捣乱玩家)所以P小,那如何量化这个P呢? 最大似然估计就是估计这些数据是由概率密度函数f生成概率,即计算所有这些点由f产生的概率的乘积打个比方用最常用的高斯分布(当然,这个分布显然不是) 高斯函数参数的计算 选择合适的lambda 另外一种思路,利用autoencoder,test的时候如果还原出的图像与原图像差距很大,可以认为是异常值函数F(x)=P{X<=x}称为X的概率分布函数,连续的概率分布函数是概率密度的积分,概率密度是概率分布的导数
Attack and Defense
- 机器训练出来的模型不光性能要强,还要能够对抗人类的恶意、攻击
Attack
加入噪声,注意这里是特殊处理过的噪声,普通的噪声对NN影响很小 image.png- 没有目标的攻击:找一个输入经过NN后,输出与正确答案越远越好
- 有目标的攻击:输出与正确答案越远越好的同时,与指定的输出越接近越好(也可以理解成很接近的输入,输出却很不同)
-
d
就是输入的限制(简单理解成,人眼看不出差别,但机器给出完全不同的答案)
- L-infinity: 所有delta的最大值
两张图是有微小差别的 背后的原因:高维空间中,某些特征的狭小空间内是与其他区域完全不相干的类,比如下图的红色
FGSM
Attack的方式有很多 主要的区别在于不同的优化算法和不同的限制条件。 FGSM是一个非常简单的方法,x的每个维度对损失函数求导,为正则-e,为负则+e,也就是只关心导数的方向,而不关心大小黑盒攻击
-
以上说的都是白盒攻击(知道NN的所有参数),如何做黑盒攻击呢?
拿同样的训练数据训练自己的proxy NN,然后训练一个可以攻击的图像,再去攻击黑盒,通常是有效果的! - 那么问题来了,没有训练数据怎么办?拿不同的图片去测试,生成训练集即可
生活中的攻击
人脸识别攻击Defense
1. 加防护罩 (添加filter,如smoothing、scaling)2.把攻击图像加入训练集 image.png 反复找漏洞,但是漏洞是无限的Explainable ML
概念 场景 目的Local Explanation (WHY)
输入的哪些部分决定了输出?修改输入的不同部分,观察输出的变化 用一个mask去遮盖图像,看输出的变化 类似的想法,逐像素修改,查看输出的变化 局限性Global Explanation
机器要告诉我们它为什么知道,不仅有答案,还要提供解释。
找一个输入使得yi最大,得到的结果如左图所示,机器觉得最像每个数字的图像在人看来都是噪声 设计一个R(x),使得x*中白点尽量少,也就是告诉机器什么样的输出更有可能看起来像数字,获得右图的效果以上是人想的正则项R,现在有更好的方式,下方高能
用GD找到使得yi最大的z,然后通过z得到x,那么我们就说x是机器觉得最像yi的东西Using a Model to explain Another
image.png LIME 局限性:到底什么叫附近nearby LIME在图像中的应用 extract:转换成特征向量xM,M是图像被切成的片数 image.png DT也可以模拟黑盒 对DT做限制,以免太深,https://arxiv.org/pdf/1711.06178.pdfLife Long Learning
EWC 核心思想:在二次训练的时候,之前比较重要的参数尽量不要去改 theta1 在平原上,所以变化对任务1的影响不大,所以对应的b1也比较小 其他变形 其他思路 GEM 核心思想:学习新任务的时候,考虑以前任务的梯度方向 学习的顺序也很重要难点
记住以前学过的东西
学完任务2后任务1的正确率下降了
如果一起学,可以学的很好,为什么分开学,就乱了,Catastrophic Forgetting
原因
Meta-Learning (Learn to learn)
思想:找一个F,输入是训练数据,输出是可以学习这些训练数据的f网络压缩
Learning Efficient Convolutional Networks through Network Slimming 2017
RETHINKING THE SMALLER-NORM-LESSINFORMATIVE ASSUMPTION IN CHANNEL PRUNING OF CONVOLUTION LAYERS 2018
Network Pruning
- 移除不重要的神经元:神经元的输出大多数时候等于0或者接近0,然后再做fine-tuning,再重复做几遍
- 为什么不直接训练小模型:小模型难训练,大模型比较容易找到全局最优
(一家之言)小模型:直接初始化很容易坏掉,train不起来,如果拿大模型初始化的数据,却能train起来
why pruning:https://arxiv.org/abs/1810.05270
压缩后的小模型,layer都是不规则的
实战中,好的情况可以压缩掉90%的参数
Knowledge Distillation
https://arxiv.org/pdf/1503.02531.pdf
先训练一个大模型,然后训练小模型,使得小模型的输出模仿大模型的输出
Teacher比labeled的data提供了更多的信息,(1和7很像)
trick:teacher的输出除一个T,使得softmax的输出没有那么极端,可以让student多学一点
- 李老师说实战中knowledge distillation没啥用...
Parameter Quantization
-
对所有的权重进行聚类
-
记录权重的时候,只记录每个权重对应的cluster
-
极端情况:能不能训练一个只有1和-1的网络,可以看做是一种正则化
灰色的点代表模型的一组权重,里面的每个权重只能是1或者-1,蓝色是没±1限制的权重的变化趋势,每次都找离蓝色最近的一个灰色(即有限制的一组权重)
https://arxiv.org/abs/1602.02830
Architecture Design
大概就是bottleneck的思想-
Depthwise Conv
每个filter负责一个channel -
Pixelwise Conv
就是1x1 filter
SqueezeNet
MobileNet
ShuffleNet
Xception
GAN
Typical GAN
Conditional GAN
Paired Data
把G的输入和输出都放入D,看输出好坏的同时,也看输入和输出有多match
-
一张图中有多个物体识别,可以想象成conditional GAN,输入是图片,输出是多个分类
-
Talking Head
https://arxiv.org/abs/1905.08233
Unsupervised Conditional GAN
- Unpaired Data
- 图像风格迁移
-
Cycle GAN
- 语音风格迁移
- 语义迁移(褒贬转换)
GAN用到文字中是有困难的,主要是离散的数据无法求微分
三种解决方案
Flow-based Generative Model
已有的生成模型
- Component-by-component (Autoregressive model)
像素是一个一个生成的,那么生成的顺序怎么定?生成速度慢 - Autoencoder
优化的是最大似然的lower bound - GAN
很难训练
那如何优化这个呢
数学基础
-
Jacobian
J_f就是雅各比矩阵,f想象成上面的Generator -
Determinant 行列式 (含义是高维中的体积)
-
Change of Variable Theorem
如何知道z和x分布的关系?
二维的情况
整理式子,输出的分布等于输入的分布乘上f逆的雅各比行列式 代入G*s,只有保证input和output的shape是一样的,才能保证J_G是可逆的
GLOW
https://arxiv.org/abs/1807.03039
https://openai.com/blog/glow/
语音生成用的很多
Parallel WaveNet
WaveGlow
Transformer
-
Transformer
是一种使用self-attention
层Seq2Seq
模型,原来用seq2seq的地方,都可以用transformer代替 -
BERT
是一种unsupervised transformer
Seq2Seq最常用的是RNN,但是RNN难以做到并行计算,怎么改进呢?
用CNN替代RNN,那如何让CNN看到所有输入呢?多叠几层!
有个叫Self-attention的东西出现了!作用和RNN一样!但是可以并行计算!
并行计算部分
Attention
的本质:输入两个向量,输出一个分数,告诉你这两个向量有多匹配
并行计算部分
并行计算部分,A就是Attention
并行计算部分
计算加速总结
Multi Head Self-Attention
不同的head有不同的关注点 e_i保留位置信息http://jalammar.github.io/illustrated-transformer/
https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html
Universal Transformer
https://ai.googleblog.com/2018/08/moving-beyond-translation-with.html
Transformer在图像中的应用
ELMO、BERT、GPT
WordEmbedding的局限:一词多义,ELMO可以解决这个问题。比如bank可以有多个解释,我们叫做不同的token
,不同的token
相同的type
(bank),不同的embedding
(向量)。
BERT是transformer的encoder
GPT是transformer的decoder
ELMO
Embeddings from Language Model
-
基于RNN的语言模型,只需要大量的文本信息,不需要标注
hidden layer 就是输入(基于上文)的embedding
BERT
Bidirectional Encoder Representations from Transformers
- 训练的时候也不需要标注
-
transformer的encoder
BERT的输入是句子,输出是一串Embedding,每个Embedding对应一个输入的word vector
两种训练方法
-
Masked LM
每次马赛克掉15%的输入,训练BERT去猜测马赛克掉的词 -
Next Sentence Prediction
当两种方法一起训练的时候,训练效果最好
怎么用BERT?
- 把BERT当做抽取feature的工具,输出一组新的Embedding,然后做后面的任务
- 论文中,BERT会和后面的任务结合在一起
ERNIE
专门为中文设计的BERT
BERT每一层做了什么事呢?
BERT Rediscovers the Classical NLP Pipeline
GPT
- transformer的decoder
- GPT-2没有开源,传说很牛逼
- 在阅读理解领域比较突出
网友评论