这几天回国折腾了一堆,终于算是安定下来,可是一周也过到周末了,赶紧把落下的课程补上。
Representation
Andrew首先介绍为什么我们需要NN这一工具。以非线性的classification为例:
对于两个基础feature的classification问题,我们可以通过多项式的形式来处理。但是如果我们遇到几百个基础feature的classification问题,就很难通过类似手段处理了。比如有x1到x100,那么总的多项式feature接近5k(大概为O(n^2)),如此这般,overfitting和computational overloading就是一个大问题了。如果再考虑2次以上的组合,那么就是典型的维数灾难啦。
之后Andrew提到了computer vision的问题,比如识别汽车,仅仅50x50的图像(2500个独立features)就是灾难性的。所以嘛,Logicstic Regression是无能为力的,NN是需要的。
V2讲了NN的起源发展,最早的目的就是为了模拟大脑的活动。八十年代出现并被推崇,九十年代慢慢衰退,目前再次兴起则是因为大规模计算机的能力提升。
Andrew随后介绍了大脑的奇特属性,当科学家们把视神经与视觉中枢切断,而将听觉神经接入视觉中枢后,发现视觉中枢竟然学会了听!这说明,大脑的学习算法在不同认知上是一致的。也就是说,我们只要给大脑提供信息流,数据,大脑就会对这些数据进行处理并加工成有意义的形式。
用一个最简单的例子来描述ANN:
这是一个典型的logistic回归的形式,如果我们把观测x1-3看作输入节点,那么这就相当于构建了一个单层的ANN.由于x0总是为1,因此bias neuron通常不会绘出。这里的sigmoid function被称作activation function。theta们通常被称作weights。
复杂一些的多层神经网络(在Hinton课上学过啦,还是比较容易理解的):
注意每一个Hidden layer的node都有不同的hypothesis,因此其对应的theta都是不同的。可以看到output layer再次对每一个hidden layer进行了同样的sigmoid处理。针对上述个例,我们可以计算第1层所有的权重系数的个数theta(1)有3x4个,其中3为第2层neural node的个数,4为第一层包括bias node在内的neural node的个数。一般化的:
If network has sj units in layer j and sj+1 units in layerj+1, then Θ(j) will be of dimension sj+1×(sj+1).
对于上述NN结构,可以看到g(z)的z具有类似矩阵乘法的形式,因此,我们可以利用这一特点对NN进行向量化处理。这种从前向后逐步计算hidden layer和output layer的做法我们称作forward propagation。Andrew随后对ANN做了个形象的描述,盖掉第一层的input layer后,hidden layer的表现与logistic regression并无二致,只不过输入项X变成了经过input layer处理后的a矩阵而已。
练习题很简单,需要了解z的计算是通过前一层给予的,而套上g()即可获得本层node的结果。
(这一个多月又是回家又是开会,恍惚间落下几周课程,感觉在明年弄出一套系统的难度还是挺大的,不过之前测试投简历到创业公司基本没有什么问题,也算是涨了自信,起码是不怕失业了,继续纲领策略,极端保守+极端激进)
Applications
Andrew随后介绍如何应用NN来解决非线性的分类问题。