Three steps of Deep Learning
- 1.define a set of function
- 2.goodness of function
- 3.pick the best funtion
Step1 define a set of function
这个function其实就是Neural Network。每个Neuron(每个logistic regression都有自己的w跟b)的连接方式会导致不同的网络结构,那么我们怎么去连接Neuron呢?
最常用的办法就是Fully Connect Feedforward Network 全连接前馈网络(每一层Neuron都与下一层每个Neuron连接)。


如果一个Neural Network里的每一个w跟b我们都已经知道,那么我们就可以把这个Neural Network看成一个function。输入是vector,输出也是vector。
如果对于一个Neural Network,我们不知道w跟b,只是定出了每个Neuron的连接方式(structure),那么就等于我们定义了一个function set。因为structure确定之后,我们给它不同的w跟b,就会有不同的function,把这些可能的function集合起来就是一个function set。
第一层layer我们叫做input layer,最后一层layer我们叫做output layer,中间的layer叫做hidden layer。


Network的运作我们通常用Matrix Operation来表示,举刚才那个例子。假设我们的function是sigmoid function。

该如何计算结果呢?

所以整个运算就是一连串的矩阵运算。把这件事情写成矩阵运算的好处就是你可以用GPU加速!

我们可以把整个Neural Network到Output layer之前的layers看作feature extractor。把最后一组x1...xk想象成一组新的feature。output layer实际上是一个Multi-class Classifier,上一章讲过多分类问题需要通过一个softmax function,所以最后一个layer我们一般也加上softmax function。

举个例子:


Input固定是256维,Output固定是10维的话,那么我们说这个Neural Network就代表类一个可以拿来做数字识别的function set,这个function set里面每个function都可以拿来做数字识别,只是有些结果会好一些有些会差一些。所以接下来你要做的就是用gradient descent来挑一组能取得最好结果的参数。

layer的层数没有限制,每一层有多少个Neuron没有限制,所以决定有多少层layer和Neuron的数量就决定了你这个function set长什么样子,如果决定了一个差的function set,那么从里面找到一个好的function就无疑大海捞针。
FAQ
该怎么决定layer和Neuron的数目呢?其实这个问题很难,Deep Learning制造了一个新的问题,就是你需要去design这个structure。所以你的问题是从如何抽一组好的feature变成了如何去design一个structure。

Step2 goodness of function
在Neural Network如何决定一组参数的好坏?很简单,跟多分类问题的方法相同,计算真实值target和预测值的cross entropy。接下来就是调整Network的参数让这个loss function值越小越好。

这只是对于一个training data来说,对于所有的training data我们就需要将所有的cross entropy加起来,得到一个Total Loss,在function set里找到一个function能够使total loss取得最小值就同等于找一组network parameters 使total loss最小。

如何找一组最好的参数呢?就是之前的Gradient Descent。

网友评论