一、深度学习神经网络为何火爆
深度学习和机器学习一个重要区别就是前者不需要做特征工程
例如,我们预测一个女明星会不会火, 以y来表示(y为0或者1),如果用机器学习我们需要做的特征工程是,用x来拟合。那么,比如x1是年龄,x2是颜值,x3是家庭背景,x4是毕业院校,x5是有没有后台。
深度学习的话,我们不需要人为做x1,x2....x5. 我们只要把输入数据扔进去(可能做一些预处理),神经网络会自己找到特征。
比如我们扔进去的就是这个明星的所有搜索结果文本。可能经过简单的文本处理之后输入,经过深度学习的神经网络,就能预测出来结果。
那么问题来了。
1.为什么深度学习这么聪明可以自己学习特征呢
2.更神奇的是,为什么很多问题上,深度学习学到的结果更靠谱呢
对于第一个问题,让我们想想《信号系统特征与处理》这门课,没学过不要紧,想想中学物理课的电学实验部分,不是有滤波器吗。我们在做特征的时候,是不是在做信号处理。比如我们去搜明星的年龄,性别是个筛选。颜值啥的,可能会做个分类聚类,然后正则化到一个1-10的分值打个分。这些都是信号处理(输入一个东西,经过一个变换以后,输出另外一个东西。哪个变换就是一个函数嘛)
也就是说,在我们用机器学习做特征的时候,我们是对原始信息,根据我们的主观经验进行了一些信号处理(函数变换)。这种处理可能靠谱,也可能不靠谱。
而神经网络,在它的每一层,其实就是自己在做特征。
之所以能学习特征是因为,每经过一层神经网络,更能减少cost function的处理方法会更受青睐,而在这一层中增加cost function效果不好的处理方法我们就远离它(但是没有完全扔掉它哦,因为可能它会在下一层有用呢)
形象的来说,机器学习是手工作坊作业,手工艺人做个花篮子,从选材料到成品都是自己在做。而深度学习神经网络是工厂流水线作业,第一个车间的人干粗活,做的特征比较粗糙,然后把结果扔给第二个车间的,第二个车间工人们做的活要精细一些,越到后面的车间工人的手艺越精细。
另外一个区别就是,手工作业的机器学习靠直觉做特征,主观性比较强。车间作业的深度学习,它每个车间都有一个类似刻度表的东西,告诉你哪个指标超了,哪个不够,工人们看着超了的话就减少一些,不够的话就➕一些
但是神经网络做特征的方法,不是先入为主的认为,什么年龄性别就是决定性要素了,它是一层层学习出来的,它学习到的特征是有层次的,由抽象到具体。
对于第二个问题,神经网络之所以如此智能应该是因为。
1.神经网络的”自动特征工程“效率更高
神经网络会自己去发现特征。他的发现过程是比较客观的。像之前所说的,他不会先入为主的认为,什么年龄性别就是决定性要素了,它是一层层学习出来的。
2. 神经网络的特征发现更客观
机器学习人为做特征工程的时候,其实人为的筛掉了一些信息。比如,可能你关注了这个明星的年龄体重颜值之类的,学习出来的效果并不好。因为人们根本没有抓到真正的影响因素,比如其实明星红不红取决于,她是不是王思聪前女友,以及经纪公司是哪家。这些如果是决定因素,你没有想到,那就可能捕捉不到真正的结果。相当于人在做特征工程的时候,过滤掉了这些关键信息。
而深度学习,因为没有做特征工程,一开始进去的是所有的raw data, 虽然不能说一开始就学习到"是不是王思聪前女友,以及经纪公司是哪家“这几个特征, 但是源数据的文本其实比较粗糙的蕴含着这样的信息,虽然第一层抽取不出来这样的特征,但是给定合适量的”神经网络工人“ ,足够的”神经网络车间“流水化处理,能得到很好的结果也不难理解。
3.深度学习神经网络不需要人造函数
机器学习里面比较复杂的模型SVM(支持向量机)在2011年博主本科做项目的时候火到不行,当时Andrew Ng拿这个做为斯坦福机器学习课程的压轴戏。
这算法完整讲清楚,A4纸不要四页也得三页了,剧情此起彼伏像个小电视剧。但是最困惑的就是你怎么去找核函数,核函数也可以叫基函数。我们知道线性代数里面有空间向量的基,基函数就是把这里的向量换成函数。通过一个变换就可以把非线性函数降维成线性了。那么当时最迷茫的就是,你怎么去找这个基函数啊!
传统机器学习还有一个问题就是,如果问题比较非线性的话,看起来就是你的黑魔法(我是说你的模型)越复杂,好像就越牛逼了,比如复杂的SVM不是可以拟合非线性挺好的么。那更复杂的问题岂不是依赖更复杂的模型,那么发现这个模型(我也叫他函数)的人是谁? 还是人啊。
所以,特征是人找的,函数模型也是人造的,所以机器学习机器学习你到底学习了啥。。。只不过是在学习权重而已。如果没有出现爱因斯坦一样的神人,岂不是某个犄角旮旯里的神奇模型永远都找不到。所以这个是不是该叫,人工学习???
深度学习神经网络可以拟合很多很多的函数模型,这样发现函数模型的工作也由机器来做了。
综上所述,深度学习可以自己发现特征,自己发现函数。他对特征和函数的搜索范围更广,评价标准更客观,所以效率更高。
比较巧妙的是,本来特征工程和模型选择是不同的步骤,在深度学习中,这些放到一起来自动发现,就是所谓的端到端。为什么能放到一起来做呢? 个人认为是因为,不论是特征选择还是模型选择,都是一种信号处理,本质上是一样的。
二、量子计算机
最近有小学妹问博主,为什么量子计算机有希望解决深度学习面临的算力问题。
这一开始要说到,摩尔定律。说好的╮(╯_╰)╭每十八个月翻倍。
现在晶体管已经非常非常小,小到进入了量子力学的范畴了。
于是就会发生神奇的事情。
大家知道二进制,一个位置不是0就是1。到了量子力学范畴,是1的可以是0,是0的可以是1。
可以想象以前的比特,是一张张的纸,上面写了0和1。 而量子比特(Qbyte)每个位置上都是在投掷硬币,正面是1反面是0
比如你有两个比特。传统计算机存储着10 这个数字,代表的是十进制的2
而两个量子比特, 你可以存储 11,10,01,00 这四个数字。
n个量子比特,就可以存储2的n次方
到了运算的时候,比如我们还是用两个比特来存数字。传统计算机存着10这个数字,所以对它实施一次操作,只能变换一个数据,运算某个函数,必须连续实施多次操作。这些操作是在不同的“两个比特”位置之间进行的。
那么问题来了。对于量子计算机,我们在我们模拟的“两个比特”中存储了四个数字。“n个比特”中存储了2的n次方个数字。
那么你有n个愤怒的硬币,不断的在变化,假如你要算二进制的 11 和10,你怎么就能让操作调皮的量子,取出来的是11和10, 而不是00和01
就好像你在抛掷很多个骰子,数字123我们算“小”(也就是0),数字456是“大”(相当于1)。那么你想取11就是11,想取10就是10,那岂不是想要大就大,想要小就小了。那么总得有一个控制随机性,出老千的方法吧。
个人认为,这就是量子计算机的瓶颈吧