课代表立正

来自鸭哥:一直想介绍一下对火爆的deep learning的一些科普向观点。比如这玩意到底为什么work,为什么就火了,啥时候work,啥时候不work,有没有有意思的思路。不是一个严谨的技术review,就是单纯的回顾历史探讨直觉。准备了个一小时的slides,先讲个十分钟的预览版看看。更详细的版本下次一定放出来。 鸭哥B站链接:https://www.bilibili.com/video/BV1Fb4y1D7M1

What is 课代表立正?

课代表立正的官方Podcast
深度访谈,有用干货,亲身验证的「真本事」
Superlinear Academy创始人,Maven Top AI Instructor
前Statsig布道师(OpenAI收购),腾讯副总监,Meta,Amazon;康奈尔经济学博士

社区:Superlinear.Academy
课程:ai-builders.com
个人:lizheng.ai

其实一直以来我都是一个Deep Learning大喷子
搞了一段时间Deep Learning之后有很多私货
想要夹带一下
所以就做了这样一个slides
整个东西会比较长
大约是一小时左右
但这次先发一个预览版
用十分钟的时间我们简单的看一下Deep Learning的历史
它为什么会work
以及为什么大家这么喜欢它
注意这并不是一个非常严谨的
说technical overview
而会是一个以广度优先的
更加注重直觉的构建的Deep Learning私货
注意我里面会有很多个人的见解
因为想要把一些比较强烈的观点表达出来
所以批判性的看法
那么首先看一下在Deep Learning之前
大家搞Mersion Learning一般是分成几块
有做feature的
有做aggregation
比如说pulling的
有做最后的model
比如说svm的
这样搞虽然分工比较好
但是互助投互不了定
大家做feature的未必是为了做model来优化
各自为政
效果不是特别好
但也不是说12年Deep Learning活了以后
突然就出了一个东西
把所有东西组到一块
它就work了
其实历史比这个复杂很多
不过我们收到Deep Learning很多
耳熟能详的术语
比如说perception
multi-layer
neural network
甚至是pyTorch的
Tensorflow之类
现在Deep Learning工具箱的独门绝国
symbolic auto differentiation等等
其实他们在1950几年1960几年都已经出来了
只是因为各种原因
大家一直没有什么办法能够train超过四层
或者三四层的neural network
一搞就overfit
这是为什么Deep Learning
在90年以后
我想95年以后就迎来了一个低谷
直到2012年搞了一个
InventionNet的比赛
出了一个叫ElixirNet的neural network
它基本上就是以前的Deep Learning
但是把之前所有的流行的算法
全都按在地上爆锤
比如说你就可以看见它这里
Evory比之前的流行算法都低了8个点
大家一看
你一下把Neural Network
从比如说两三层一样搞到了8层
非常deep
Deep Learning
牛逼牛逼
就吸引了很多注意力
当然Deep Learning名字的来源并不是这里
这个我们以后再说
那这个ElixirNet它为啥突然就work了呢
从技术上来说主要是两个原因
一个是它用了dropout
把overfitting这个问题解决了
但我觉得dropout从后来的历史来看
也不是最好的能解决overfitting的方法
它可能更重要的一个原因
非常核心的原因
是说它解决了gradient vanishing这个问题
那啥叫gradient vanishing呢
任何一个Motion Learning的算法
比如讲你用gradient decision来解
它干的事情就是有一个目标函数
然后这个算法就在目标函数的某一个点上
比如讲这个曲面就是这个目标函数的形状
在这个点上面呢
它的目标是要走到这个曲面的谷底
也就是最小化这个目标函数
或者是loss function
那它怎么去做这一点呢
它会先从这个点出发向周围看一圈
然后找到最陡峭的那个方向
向那边跨一小步
然后重复这个过程
再向周围看一圈
再朝最陡峭的方向走一小步
直到走到谷底
在这样的一个形状
比如泡面的形状上面
看上去还是比较简单的
哪个方向最陡峭比较容易判断出来
但是比如讲像YouTube这样
Deep Learning里面经常用到的
Activation Function叫Sigmoid
在这边呢
如果X在比较大的情况下
比如说8啊10啊
它gradient就是0了
那么如果对Deep Learning有一些初步的了解
知道back propagation啊
练试法则啊之类的就知道
那么一层它的gradient接近0
很多层沉起来
它gradient基本上就是0了
所以在训练的时候
整个训练过程基本上就停滞了
这也是为什么之前train出来的原因之一
当然gradient vanishing还有很多其他的解释
这个我们到完整版再说
Alex net他是怎么解决这个问题的呢
他把Sigmoid换成了relo
那么可以看一下它这个形状
就解决了gradient vanishing的问题
因为它没有像之前的那样的形状
具体为什么可以自己想一想
这是非常重要的一点
因为在很多相对独立的Deep Learning的work中间
大家用各自不同的方法都解决了这个问题
只要你解决了这个问题
效果就会特别好
有时候Alex net把它堆到了8层
接下来Resnet用Retidubleck把它堆到了100层
后面堆到了1000层
效果特别好
甚至在时序分析NLP领域的LSTM
97年的时候也是
从RNA一路走过来
也用类似的方法实现了这样gradient vanishing
或者RNA还有个gradient explosion之类的解决
也都实现了比较好的效果
所以我个人认为gradient vanishing
是Deep Learning为什么work的一个重要的因素
此外还有两个因素
一个是我们终于有了大规模的人工标注的数据
比如说以前CALTEC 101大家做都做9000张图
觉得挺大了
到黎飞飞他们组12年左右
11年左右
11年左右弄出来一个200万张图的ImgNet
因为有这么多图
所以Neural Network才不合适
还有一个重要的一点
是大家终于知道用GPU来train了
其实这件事情并不是那么直观
现在Cuda很方便
但当时Cuda还是1.0
在说我主要用来做天气预报
这样的情况下
能够意识到Deep Learning
Deep Neural Network能够用GPU来并行train
是一件很不容易的事情
甚至AlexNet那篇文章一半的篇幅都在讲怎么去干这件事
这是非常有开拓性的实验
那啥时候适合用Deep Learning
我觉得主要有两个
一个是当你有很多数据的时候
但其实也有一些例外
比如说Transfer Learning就可以允许你用比较小的数据
生几十张图就能train一个相对靠谱的模型出来
同时也有一些其他的例外
比如说你可以生成一些数据
或者是像AlphaGo一样
或者是这数据哪怕非常noisy
没有人工标注也可以
Facebook之前在Instagram上train了一个非常noisy的数据
train了一个毛老校伙也特别好
此外还有一个要求是这个数据最好是归整的
比如说图像的像素是网格
或者文本语音
它本身是一个线性的序列
这就比较好
像图不是不能做
而是就需要更多的处理
相对来说就不是那么适合用Deep Learning来做
那啥时候Deep Learning就不适合用来解决这个问题呢
除了说你没有很多数据或者数据不归正以外
还有一个是你需要很多interpretability的时候
或者你需要一个随机性特别小特别可靠
或者是你没有多少资源
计算资源或者是电力来做influence的时候
就不是特别适合
为什么人们就这么喜欢Deep Learning
它突然就这么火呢
我觉得不是因为它的performance是最好的
这是因为任何时间总有个performance最好的算法
那为啥到Deep Learning时间它突然就引爆了呢
也不是因为说Deep Learning就解决了一些问题
它是强人中之能要来了
好像也不是
我的答案是
它到目前为止还没有出现饱和这个情况
我偷了一个图来解释这个观点
啥叫饱和呢
就以前的Deep Learning算法
它像这条红线一样
搞了一段时间
即使你给它扔更多的数据
你用更多的算力
更复杂的模型
它performance也可能又涨不上去了
这就叫saturation
Deep Learning到目前为止至少是人有多大胆地有多大产
你只要有足够的前来标数据
有足够的机器来支撑更复杂的算法
更大的模型
你就能拿到更好的performance
所以这个东西
大公司特别喜欢
因为它把这个东西
特别喜欢
因为它把技术上人才上的竞争
直接变成了钱上面的竞争
只要你加三倍的服务器
我就能拿到更好的product
这是非常简单的
他们非常喜欢的
所以这是一个悖论
就是Deep Learning它门槛又在变低又在变高
说变低吧
是因为你看
高中生都可以train一个model出来
说AI model
同时也不需要做future engineering
可能不太需要domain knowledge
有些时候
同时它又门槛又在变高
因为你要是真想把它做成产品
你需要很多钱去训练
或者是标数据等等
所以这玩意还挺矛盾的
在正式版里面
我会继续介绍一些Deep Learning相关的模型
不一定是模型
可能是一些思路
比如说transfer learning
representation learning
general team model
像Syria TAC
RNL STM transformer
这些东西
new architecture search
这次时间不够
就暂时先这样
总结一下刚才说了啥
Deep Learning为什么12年左右突然work呢
我觉得主要是因为有GPU的算力
有大规模的数据集
以及解决了gradient vanishing的问题
啥时候用Deep Learning好呢
在有大规模的数据和规整数据结构的情况下
为什么大家
尤其是大公司喜欢Deep Learning的数据
是因为到目前为止还没有看到它饱和的迹象

今天就到这吧
我回头会把这个slides放出来
里面
后面有reference
感兴趣的话可以读一下里面具体的paper
等到正式版的时候
我再看做另外一个视频出来吧