引入
上一章我们学习了逻辑回归的概念,也揭示了逻辑回归的局限性:当数据线性不可分时,我们需要对feature做feature transformation 从而将不可分的数据转化成线性可分的数据。然而,我们提到,找到合适的feature transformation相对较难,而今天我们引入的deep learning 方法,可以取代这一步,用其他方式代替。
简述Deep learning 的三个步骤
step 1:define a set of function
如图为neural network 的基本结构,也就是上一层的输入经过一个逻辑回归运算后得到的结果作为下一层的输入。那么问题来了,我们每一层设计多少个unit呢?一共设置多少层呢?每一层的连接方式是什么呢?(常见的有全连接Fully Connect Feedforward Network)
我们可以将neural network分成三部分,input layer就是原始的feature输入值,中间的hidden layers其实是相当于一个feature extractor的过程,取代了不易实现的feature transformation。最后一层output layer之前有一个softmax过程(详见逻辑回归中的多分类部分),相当于一个multi-class classifier。
那么这个network的结构就是我们第一步需要决定的
Step2: goodness of a function
我们用辨识手写数字为例
y1....y10分别输出的是判断为0-9的是个输出的可能性。而我们已知输入为1,因此我们有一个实际的y vector,他的输入只有1是1,其余都是0。 类似于逻辑回归,我们使用交叉熵来估测模型的好坏,交叉熵(cross entropy)越小,拟合程度越好
Step 3:Pick the best function
我们有一系列的训练数据,将他们的交叉熵之和设为loss,然后只需要用gradient descent的方法来最小化loss就可以得到最好的参数。
Why Deep?
Why not shallow or fat?
因为deep相较于普通的learning,其参数更多,能够表达更复杂的函数关系。
而相较于fat, 它的准确率更高(具体为什么我暂时不知道)