以下文章来源于包包算法笔记 ,作者包包闭关修炼
这个题目挺有意思【看着简单,实际上。。。】,有点玄学的味道,又有点知识的味道,这也太难为神经网络了。
在做这个题目之前,先想一个问题,让神经网络判断阿猫阿狗难呢,还是判断奇偶数难呢?
再回顾下非线性的概念。
开始吟唱。
非线性,应该是从原始输入到目标决策之间gap的刻画,用博大精深的中文语言为例:
比如垃圾话,就很直白,无非是问候几个人物,几个器官,几个行为。可以望文生义。
但是阴阳话,这个就非常难了。
感恩两字,你要看他真的感恩,还是在那里只能咸因。威武支持有希望了,你看他是不是在叼飞盘,这就很难。
这些都要看具体的场景,人物和环境,这就叫非线性。
人的解决问题,大概就是把一个复杂目标化简解决的能力,目的是降低问题的非线性,把一个问题去解决的过程。具体到数据挖掘上,应该是把特征表达出来的能力。
具体到问题,非线性比较高的场景有,序列建模,大规模离散ID建模,阴阳话识别,语音的特征表达。这些都是非线性非常高的场景,基本都超出了手动解决输入到目标之间gap的能力。
我们再举一个例子。
题目:请使用一个逻辑回归的模型,建模一个身材分类器,身材分偏胖和偏瘦两种,输入的特征有身高和体重。
数据集大概长这样:
事实上,我们很难单纯地从身高和体重决策出一个人的身材,你说姚明体重280斤,他真的一定就胖吗??别忘了他身高有226公分的。
这组数据可能超出了你的认知,只看数据不看照片,一下子不好说他是胖还是瘦。(其实挺胖的哈哈)
嗯,这个你看到那组数据,不好一下子说出来的感觉,就是机器学习里面非常关键的概念,“非线性”。
回到题目,判断奇偶,这个非线性的层次又上了一大截。
一个刚出生的婴儿,你教会奇数偶数,要比教他识别猫狗难如登天。
那怎么办呢?
第一,特征工程
X%2,加在输入里,你看它牛不牛?这种对于人类小学生水平的知识,对于机器学习就捉襟见肘了。
或者把数据转化成二进制sequence输入,模型就根据最后一位的0和1,直接得到结果了。
本质上这两种方法都是用人的先验知识,把数据经过变化,处理成模型更易于理解的形式。这个过程,也就是特征工程这件事情的本质,降低非线性,助力模型学习。好风凭借力,助我上青云。
第二,升级模型
特征工程总有种case by case的感觉,处理特定的问题很好,如果我的模型想泛化起来,就不是有多少人工就有多少智能,这么简单了。
办法也有,神经网络的普遍的方式行不通,我们看看能不能搞一个融入先验知识的模型结构,改造神经网络,无非是模型结构,激活,池化这些东西。
最简单的方式就是使用有周期性的激活函数,本身mod这些操作都是不可导的,但是三角函数可以简单解决,答案呼之欲出。
y=0.5*cos(π*(x-1)) 0.5
这个函数的图像长这样,而且它很好理解梯度下降的本质,激活结果就是答案,没有在拐点上的位置,损失函数都会push你产生梯度,逼着你的参数去找最优解。
我们再看语音领域,更玄学中的玄学了。
为了应对更复杂的非线性,聪明的人搞出了时频变换。
在这基础上,又搞出了MFCC。
这是典型的,用人脑解决非线性的例子。
好了,我们再回顾一下开头的另一道LR识别胖瘦题目吧。
升级模型,把线性的逻辑回归加上kernel来增加非线性的能力。我们使用这个模型 sigmoid(ax by kx*y^(-2) c),这个模型通过多项式核方法的升级,解决了低维空间线性模型不太好解决的问题。
特征工程,掏出体检报告上的BMI指数,BMI=体重/(身高^2)。这样,通过BMI指数,就能非常显然地帮助我们,刻画一个人身材如何。甚至,你可以抛弃原始的体重和身高数据。
要是没有BMI指数的话。你也只能像LR那样,通过核方法来解决了。在方式一我们使用了核方法给这些模型升维,方式二使用了特征方法。
天下没有免费的午餐。
给模型引入非线性是有代价的,连LR这种最简单的神经网络形式都影响很大,一是共线性,二是噪声。
第一、共线性的意思是几个项表达的含义是趋同的,保持了很强的线性关系,对于逻辑回归是致命的问题,因为他带来了权重的不稳定,要知道逻辑回归权重可是暗示了特征重要性的。还会破坏朴素贝叶斯的基本假设。这些都是有副作用的。
(要是你对这段话,不好理解的话,仔细学习下逻辑回归模型和共线性的理论,此处不单独展开)
第二、噪声让你的分类器学习到了一些不好的东西,对你的决策没有产生泛化的贡献,反而带跑偏你的模型,学习到了一些不是知识的边边角角。
很多问题不像判断胖瘦,奇偶数,这样简单,为了获取他们的知识。
你围绕输入做了一系列特征工程,他们有的有用,有的有噪音。
你围绕着神经网络设计了一系列模型结构,他们一部分可以提取知识,一部分又学到了边边角角,歪门邪道。
事情都有两面性,神经网络的演进就是这样的哲学,用人脑的方法论,抓住主要矛盾,螺旋前进。于是搞出了各种各样的tricks,dropout,BN,LN,Adam,在计算机认知科学里,就像一颗颗发光的珍珠。学习工作也是这样吧。