美文网首页
李宏毅2019笔记

李宏毅2019笔记

作者: 音符纸飞机 | 来源:发表于2019-05-07 21:37 被阅读0次

    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与训练数据的相似程度
    • 应用:刷卡行为、网络入侵识别、癌细胞检测
    两种情况,clean:所有训练样本都是正常值, polluted:训练样本有异常值

    有classifier的情况下

    已经有分类器的情况下,在输出分类标签的同时,在输出一个置信值,用一个阈值来区分 置信值可以用分类概率最大值或者计算熵 神经网络输出添加置信值 如何判断系统的好坏?如何确定lambda? ROC曲线等等
    可能存在的问题:有的东西比猫更猫 其他思路

    没有classifier的情况

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

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

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

    Attack and Defense

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

    Attack

    加入噪声,注意这里是特殊处理过的噪声,普通的噪声对NN影响很小 image.png
    • 没有目标的攻击:找一个输入经过NN后,输出与正确答案越远越好
    • 有目标的攻击:输出与正确答案越远越好的同时,与指定的输出越接近越好(也可以理解成很接近的输入,输出却很不同)
    • d就是输入的限制(简单理解成,人眼看不出差别,但机器给出完全不同的答案)
    d的两种简单形式
    • L-infinity: 所有delta的最大值
    梯度下降求解x' 每次更新x的时候注意限制d 攻击实例:经过训练,添加噪声,右边的猫被识别成了star fish
    两张图是有微小差别的 背后的原因:高维空间中,某些特征的狭小空间内是与其他区域完全不相干的类,比如下图的红色

    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.pdf

    Life Long Learning

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


      学完任务2后任务1的正确率下降了
      如果一起学,可以学的很好,为什么分开学,就乱了,Catastrophic Forgetting
      原因
    EWC 核心思想:在二次训练的时候,之前比较重要的参数尽量不要去改 theta1 在平原上,所以变化对任务1的影响不大,所以对应的b1也比较小 其他变形 其他思路 GEM 核心思想:学习新任务的时候,考虑以前任务的梯度方向 学习的顺序也很重要

    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的网络,可以看做是一种正则化
      https://arxiv.org/abs/1602.02830

      灰色的点代表模型的一组权重,里面的每个权重只能是1或者-1,蓝色是没±1限制的权重的变化趋势,每次都找离蓝色最近的一个灰色(即有限制的一组权重)

    Architecture Design

    大概就是bottleneck的思想
    • Depthwise Conv 每个filter负责一个channel
    • Pixelwise Conv 就是1x1 filter
    Depthwise Conv + Pixelwise Conv vs General Conv

    SqueezeNet
    MobileNet
    ShuffleNet
    Xception

    GAN

    Typical GAN

    Conditional GAN

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

    Unsupervised Conditional GAN

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


    • 语音风格迁移
    • 语义迁移(褒贬转换)

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


    三种解决方案

    Flow-based Generative Model

    已有的生成模型

    • Component-by-component (Autoregressive model)
      像素是一个一个生成的,那么生成的顺序怎么定?生成速度慢
    • Autoencoder
      优化的是最大似然的lower bound
    • GAN
      很难训练
    p_data是真实数据的分布,训练的目标是最大化p_G和p_data的相似度,等同于最小化两者的KL散度
    那如何优化这个G^*
    数学基础
    • 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-attentionSeq2Seq模型,原来用seq2seq的地方,都可以用transformer代替
    • BERT是一种unsupervised transformer

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


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


    Self Attention Paper


    并行计算部分

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

    d是q和k的维度
    并行计算部分
    并行计算部分,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

    Transformer Transformer!! positional encoding 就是上面提到的e attention visualization
    Universal Transformer

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

    Transformer在图像中的应用

    self-attention GAN

    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
    双向RNN,合并双向hidden layer的输出作为embedding 那么问题来了,当RNN有很多层的时候,要选取哪一层hidden layer作为Embedding呢? ELMO会加权平均所有hidden layer的输出,如下图中,假设有两个隐藏层,权重系数作为学习参数,和后续任务一同训练

    BERT

    Bidirectional Encoder Representations from Transformers

    • 训练的时候也不需要标注
    • transformer的encoder


      BERT的输入是句子,输出是一串Embedding,每个Embedding对应一个输入的word vector
    两种训练方法
    • Masked LM


      每次马赛克掉15%的输入,训练BERT去猜测马赛克掉的词
    • Next Sentence Prediction

    特殊的token代表不同的任务,[CLS]表示这个token对应的Embedding是分类结果,[SEP]表示断句

    当两种方法一起训练的时候,训练效果最好

    怎么用BERT?
    • 把BERT当做抽取feature的工具,输出一组新的Embedding,然后做后面的任务
    • 论文中,BERT会和后面的任务结合在一起
    句子分类 slot filling NL推断 基于文本提取的问答,输入文章D,问题Q,输出答案在文章中的起止位置(s,e) 橙色和蓝色两个向量是需要训练的,与BERT的每个输出做內积,类似于attention的作用,后面接一个software来预测s和e的位置,如果s和e有矛盾,那么就是没有答案
    ERNIE

    专门为中文设计的BERT

    BERT每一层做了什么事呢?

    BERT Rediscovers the Classical NLP Pipeline

    WHAT DO YOU LEARN FROM CONTEXT? PROBING FOR SENTENCE STRUCTURE IN CONTEXTUALIZED WORD REPRESENTATIONS

    GPT

    • transformer的decoder
    • GPT-2没有开源,传说很牛逼
    • 在阅读理解领域比较突出
    GPT

    相关文章

      网友评论

          本文标题:李宏毅2019笔记

          本文链接:https://www.haomeiwen.com/subject/rdeznqtx.html