Deep Learning Neural Network
the history of Deep Learning下图描述了深度学习的应用率下图是深度学习的历史how to do deep learning如何去深度学习,分为以下三步:Neural Network step1第一步就是神经网络,下图红框处就可以代表一个神经元,神经网络的参数为θ,也就是所有的w和b的集合。因为神经网络就是由若干逻辑回归构成。下面我们来看看其中一种神经网络,完全连接前馈神经
the history of Deep Learning
下图描述了深度学习的应用率
下图是深度学习的历史
how to do deep learning
如何去深度学习,分为以下三步:
Neural Network step1
第一步就是神经网络,下图红框处就可以代表一个神经元,神经网络的参数为θ,也就是所有的w和b的集合。因为神经网络就是由若干逻辑回归构成。
下面我们来看看其中一种神经网络,完全连接前馈神经网络:就是把每根线都连上,除了初始值之外,剩下的神经元的输入就是上一次的输出,就这样一层一层的迭代,那么会得到一个很好的结果,我们回想一下如果只用一个逻辑回归,那么很有可能找不出一条合理的分界线分类,于是要进行feature transformation,这就是神经网络所要做的。
来看看下图输入是1和-1,最后两个sigmoid函数输出的是0.62和0.83
再看看输入是0和0,输出是0.51和0.85.我们将输入和输出都看成是一个向量。
我们来看看完全神经网络的结构,包括了输入,隐藏层,输出层,以及最后的output
深度就是有很多层隐藏层,下图展示了隐藏层的层数与loss的情况。
Matrix Operation
神经网络就是一个一个逻辑回归拼的,我们将输入输出,以及w和b,都看成向量,还记得σ(wx+b)吗,下图就给出了一次具体的计算过程。
下图表示了若干次σ(wx+b),一直迭代。。。
换言之,迭代过程如下图所示。
我们把output layer作为一个多分类器,如下图:
神经网络应用
图像识别,输入是一张16x16的图片,每一个像素是一个特征值,也就是有256个特征值,然后将其变为一个256维的特征向量,该特征向量才是真正的输入,然后将该向量传入一个函数,这里的函数就是神经网络,最后输出一些概率,然后来判断这图是几
现在我们得任务是去找下图红框得部分,也就是找一个很好得神经网络结构。
这里有几个问题:
进行深度学习step2
找loss。
下图举了一个例子,有一张图,有256个特征,将其作为向量传入到神经元中,同时给每一个神经元一系列初始参数,然后output从y1到y10,也就是表示了1,2,3…9,0这十个数,这十个数组成一个十维向量,然后给定目标值,目标值也是一个向量,目标值得第一个分量是1,然后我们将output和target这两个向量做交叉熵,这样就找到了这张图的loss
然后我们多传一些图片进行训练,将所有的loss加起来,我们要找到总的loss最小的函数,也就是找到神经网络中使L最小的参数θ
pick the best function step3
同理,这里照样使用梯度下降,如下图,我们单独看某一分量,就和线性模型的梯度下降一样,这里只是将各个分量拼成一个向量了
甚至连牛逼的阿尔法go都是用的梯度下降。
那么我们有没有一种更有效率的方法对深度学习里的参数进行梯度下降?显然是有的,如下图,Backpropagation(反向传播算法),之后会写关于这个算法的内容
question:deeper is better?
不必惊奇,更多的参数自然有更好的表现
任何一个连续的函数f,都可以用一层hidden layer来实现,只要有足够多的神经元,都可以将N维向量转为M维向量。
那么下面两种情况的神经网络谁更好?
我们控制上图两种结构的神经网络的参数基本一致,然后仅仅改变深度和广度,来做比较,如下图:我们发现,越深是越好的,而不是越广越好。
Modularization
我们在写程序的时候,显然不能把所有的内容写到main里,我们要将其进行封装,变成各个子函数,然后要用的时候互相调用。
同理,在深度学习的时候也要用类似的思想,比如给一张image,有四个分类,长发女,长发男,短发女,短发男,由于初始给的训练集里长发男的样本很少,那么如果image确实是长发男,但是该model对该image分类为长发男的可能性就很小。
这时,我们要采用模块的思想,我们假设有一个基本分类器,将特征分为性别和发长,这时准确率会极大提升。
如下图,靠后的分类器可以调用基本分类器中以划分好的基本特征,这时我们所需要的样本数就不必太多了。
下图展示了分类器迭代,前一个是后一个的基本分类器,这样会使准确率越来越高。
更多推荐
所有评论(0)