李宏毅2019笔记

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

李宏毅2019笔记_第1张图片
x与训练数据的相似程度
  • 应用:刷卡行为、网络入侵识别、癌细胞检测
李宏毅2019笔记_第2张图片
两种情况,clean:所有训练样本都是正常值, polluted:训练样本有异常值

有classifier的情况下

李宏毅2019笔记_第3张图片
已经有分类器的情况下,在输出分类标签的同时,在输出一个置信值,用一个阈值来区分
李宏毅2019笔记_第4张图片
置信值可以用分类概率最大值或者计算熵
李宏毅2019笔记_第5张图片
神经网络输出添加置信值
李宏毅2019笔记_第6张图片
如何判断系统的好坏?如何确定lambda? ROC曲线等等

李宏毅2019笔记_第7张图片
可能存在的问题:有的东西比猫更猫
李宏毅2019笔记_第8张图片
其他思路

没有classifier的情况

李宏毅2019笔记_第9张图片
image.png
李宏毅2019笔记_第10张图片
举个栗子,这是一个游戏中玩家的属性(说垃圾话的频率,无政府状态下发言的频率),数据稀疏的地方更有可能是不正常的玩家(小白、捣乱玩家)所以P小,那如何量化这个P呢?
李宏毅2019笔记_第11张图片
最大似然估计就是估计这些数据是由概率密度函数f生成概率,即计算所有这些点由f产生的概率的乘积

函数F(x)=P{X<=x}称为X的概率分布函数,连续的概率分布函数是概率密度的积分,概率密度是概率分布的导数

李宏毅2019笔记_第12张图片
打个比方用最常用的高斯分布(当然,这个分布显然不是)
李宏毅2019笔记_第13张图片
高斯函数参数的计算
李宏毅2019笔记_第14张图片
选择合适的lambda
李宏毅2019笔记_第15张图片
另外一种思路,利用autoencoder,test的时候如果还原出的图像与原图像差距很大,可以认为是异常值

Attack and Defense

  • 机器训练出来的模型不光性能要强,还要能够对抗人类的恶意、攻击

Attack

李宏毅2019笔记_第16张图片
加入噪声,注意这里是特殊处理过的噪声,普通的噪声对NN影响很小
李宏毅2019笔记_第17张图片
image.png
  • 没有目标的攻击:找一个输入经过NN后,输出与正确答案越远越好
  • 有目标的攻击:输出与正确答案越远越好的同时,与指定的输出越接近越好(也可以理解成很接近的输入,输出却很不同)
  • d就是输入的限制(简单理解成,人眼看不出差别,但机器给出完全不同的答案)
李宏毅2019笔记_第18张图片
d的两种简单形式
  • L-infinity: 所有delta的最大值
李宏毅2019笔记_第19张图片
梯度下降求解x'
李宏毅2019笔记_第20张图片
每次更新x的时候注意限制d
李宏毅2019笔记_第21张图片
攻击实例:经过训练,添加噪声,右边的猫被识别成了star fish

李宏毅2019笔记_第22张图片
两张图是有微小差别的
李宏毅2019笔记_第23张图片
背后的原因:高维空间中,某些特征的狭小空间内是与其他区域完全不相干的类,比如下图的红色

FGSM

李宏毅2019笔记_第24张图片
Attack的方式有很多
李宏毅2019笔记_第25张图片
主要的区别在于不同的优化算法和不同的限制条件。 FGSM是一个非常简单的方法,x的每个维度对损失函数求导,为正则-e,为负则+e,也就是只关心导数的方向,而不关心大小

黑盒攻击

  • 以上说的都是白盒攻击(知道NN的所有参数),如何做黑盒攻击呢?


    李宏毅2019笔记_第26张图片
    拿同样的训练数据训练自己的proxy NN,然后训练一个可以攻击的图像,再去攻击黑盒,通常是有效果的!
  • 那么问题来了,没有训练数据怎么办?拿不同的图片去测试,生成训练集即可
李宏毅2019笔记_第27张图片
有人尝试出了很神奇的噪声,加到所有图像上,都会形成攻击

生活中的攻击

李宏毅2019笔记_第28张图片
人脸识别攻击

Defense

李宏毅2019笔记_第29张图片
1. 加防护罩 (添加filter,如smoothing、scaling)2.把攻击图像加入训练集
李宏毅2019笔记_第30张图片
image.png
李宏毅2019笔记_第31张图片
反复找漏洞,但是漏洞是无限的

Explainable ML

李宏毅2019笔记_第32张图片
概念
李宏毅2019笔记_第33张图片
场景
李宏毅2019笔记_第34张图片
目的

Local Explanation (WHY)

李宏毅2019笔记_第35张图片
输入的哪些部分决定了输出?修改输入的不同部分,观察输出的变化
李宏毅2019笔记_第36张图片
用一个mask去遮盖图像,看输出的变化
李宏毅2019笔记_第37张图片
类似的想法,逐像素修改,查看输出的变化
李宏毅2019笔记_第38张图片
局限性

Global Explanation

机器要告诉我们它为什么知道,不仅有答案,还要提供解释。
李宏毅2019笔记_第39张图片
找一个输入使得yi最大,得到的结果如左图所示,机器觉得最像每个数字的图像在人看来都是噪声
李宏毅2019笔记_第40张图片
设计一个R(x),使得x*中白点尽量少,也就是告诉机器什么样的输出更有可能看起来像数字,获得右图的效果
以上是人想的正则项R,现在有更好的方式,下方高能
李宏毅2019笔记_第41张图片
用GD找到使得yi最大的z,然后通过z得到x,那么我们就说x是机器觉得最像yi的东西

Using a Model to explain Another

李宏毅2019笔记_第42张图片
image.png
李宏毅2019笔记_第43张图片
LIME
李宏毅2019笔记_第44张图片
局限性:到底什么叫附近nearby
李宏毅2019笔记_第45张图片
LIME在图像中的应用
李宏毅2019笔记_第46张图片
extract:转换成特征向量xM,M是图像被切成的片数
李宏毅2019笔记_第47张图片
image.png
李宏毅2019笔记_第48张图片
DT也可以模拟黑盒
李宏毅2019笔记_第49张图片
对DT做限制,以免太深,https://arxiv.org/pdf/1711.06178.pdf

Life Long Learning

难点
  • 记住以前学过的东西


    李宏毅2019笔记_第50张图片
    学完任务2后任务1的正确率下降了

    李宏毅2019笔记_第51张图片
    如果一起学,可以学的很好,为什么分开学,就乱了,Catastrophic Forgetting

    李宏毅2019笔记_第52张图片
    原因
李宏毅2019笔记_第53张图片
EWC 核心思想:在二次训练的时候,之前比较重要的参数尽量不要去改
李宏毅2019笔记_第54张图片
theta1 在平原上,所以变化对任务1的影响不大,所以对应的b1也比较小
李宏毅2019笔记_第55张图片
李宏毅2019笔记_第56张图片
其他变形
李宏毅2019笔记_第57张图片
其他思路
李宏毅2019笔记_第58张图片
GEM 核心思想:学习新任务的时候,考虑以前任务的梯度方向
李宏毅2019笔记_第59张图片
学习的顺序也很重要

Meta-Learning (Learn to learn)

李宏毅2019笔记_第60张图片
思想:找一个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,再重复做几遍
  • 为什么不直接训练小模型:小模型难训练,大模型比较容易找到全局最优
    李宏毅2019笔记_第61张图片
    (一家之言)小模型:直接初始化很容易坏掉,train不起来,如果拿大模型初始化的数据,却能train起来

    why pruning:https://arxiv.org/abs/1810.05270

压缩后的小模型,layer都是不规则的

实战中,好的情况可以压缩掉90%的参数

Knowledge Distillation

https://arxiv.org/pdf/1503.02531.pdf

先训练一个大模型,然后训练小模型,使得小模型的输出模仿大模型的输出


李宏毅2019笔记_第62张图片
Teacher比labeled的data提供了更多的信息,(1和7很像)

李宏毅2019笔记_第63张图片
trick:teacher的输出除一个T,使得softmax的输出没有那么极端,可以让student多学一点
  • 李老师说实战中knowledge distillation没啥用...

Parameter Quantization

  • 对所有的权重进行聚类

  • 记录权重的时候,只记录每个权重对应的cluster


    李宏毅2019笔记_第64张图片
  • 极端情况:能不能训练一个只有1和-1的网络,可以看做是一种正则化
    https://arxiv.org/abs/1602.02830

    李宏毅2019笔记_第65张图片
    灰色的点代表模型的一组权重,里面的每个权重只能是1或者-1,蓝色是没±1限制的权重的变化趋势,每次都找离蓝色最近的一个灰色(即有限制的一组权重)

Architecture Design

李宏毅2019笔记_第66张图片
大概就是bottleneck的思想
  • Depthwise Conv 每个filter负责一个channel
  • Pixelwise Conv 就是1x1 filter
    李宏毅2019笔记_第67张图片
李宏毅2019笔记_第68张图片
Depthwise Conv + Pixelwise Conv vs General Conv

SqueezeNet
MobileNet
ShuffleNet
Xception

GAN

Typical GAN

Conditional GAN

Paired Data
把G的输入和输出都放入D,看输出好坏的同时,也看输入和输出有多match

  • 一张图中有多个物体识别,可以想象成conditional GAN,输入是图片,输出是多个分类


    李宏毅2019笔记_第69张图片
  • Talking Head
    https://arxiv.org/abs/1905.08233

    李宏毅2019笔记_第70张图片

Unsupervised Conditional GAN

  • Unpaired Data
  • 图像风格迁移
  • Cycle GAN


    李宏毅2019笔记_第71张图片
  • 语音风格迁移
  • 语义迁移(褒贬转换)

GAN用到文字中是有困难的,主要是离散的数据无法求微分


李宏毅2019笔记_第72张图片
三种解决方案

Flow-based Generative Model

已有的生成模型

  • Component-by-component (Autoregressive model)
    像素是一个一个生成的,那么生成的顺序怎么定?生成速度慢
  • Autoencoder
    优化的是最大似然的lower bound
  • GAN
    很难训练

李宏毅2019笔记_第73张图片
p_data是真实数据的分布,训练的目标是最大化p_G和p_data的相似度,等同于最小化两者的KL散度

那如何优化这个呢

数学基础
  • Jacobian


    李宏毅2019笔记_第74张图片
    J_f就是雅各比矩阵,f想象成上面的Generator
  • Determinant 行列式 (含义是高维中的体积)


    李宏毅2019笔记_第75张图片
  • Change of Variable Theorem


    李宏毅2019笔记_第76张图片
    如何知道z和x分布的关系?
李宏毅2019笔记_第77张图片
一个简单的例子
李宏毅2019笔记_第78张图片
一维的情况

李宏毅2019笔记_第79张图片
二维的情况

李宏毅2019笔记_第80张图片
整理式子,输出的分布等于输入的分布乘上f逆的雅各比行列式
李宏毅2019笔记_第81张图片
代入G*s,只有保证input和output的shape是一样的,才能保证J_G是可逆的
李宏毅2019笔记_第82张图片
李宏毅2019笔记_第83张图片
李宏毅2019笔记_第84张图片
李宏毅2019笔记_第85张图片
李宏毅2019笔记_第86张图片
GLOW

https://arxiv.org/abs/1807.03039
https://openai.com/blog/glow/

李宏毅2019笔记_第87张图片

语音生成用的很多
Parallel WaveNet
WaveGlow

Transformer

  • Transformer是一种使用self-attentionSeq2Seq模型,原来用seq2seq的地方,都可以用transformer代替
  • BERT是一种unsupervised transformer

Seq2Seq最常用的是RNN,但是RNN难以做到并行计算,怎么改进呢?
用CNN替代RNN,那如何让CNN看到所有输入呢?多叠几层!


李宏毅2019笔记_第88张图片

有个叫Self-attention的东西出现了!作用和RNN一样!但是可以并行计算!


李宏毅2019笔记_第89张图片

Self Attention Paper

李宏毅2019笔记_第90张图片

李宏毅2019笔记_第91张图片
并行计算部分

Attention的本质:输入两个向量,输出一个分数,告诉你这两个向量有多匹配

李宏毅2019笔记_第92张图片
d是q和k的维度

李宏毅2019笔记_第93张图片
并行计算部分

李宏毅2019笔记_第94张图片

李宏毅2019笔记_第95张图片
并行计算部分,A就是Attention

李宏毅2019笔记_第96张图片

李宏毅2019笔记_第97张图片
并行计算部分
李宏毅2019笔记_第98张图片

李宏毅2019笔记_第99张图片
计算加速总结
Multi Head Self-Attention
李宏毅2019笔记_第100张图片
不同的head有不同的关注点
李宏毅2019笔记_第101张图片
e_i保留位置信息

http://jalammar.github.io/illustrated-transformer/
https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html

李宏毅2019笔记_第102张图片

李宏毅2019笔记_第103张图片
Transformer
李宏毅2019笔记_第104张图片
Transformer!!
李宏毅2019笔记_第105张图片
attention visualization
Universal Transformer

https://ai.googleblog.com/2018/08/moving-beyond-translation-with.html

Transformer在图像中的应用

self-attention GAN

ELMO、BERT、GPT

WordEmbedding的局限:一词多义

你可能感兴趣的:(李宏毅2019笔记)