输入的数据,通过一个加权,再求和,再加一个偏置,输入隐层的神经元里。神经元自带一个激活函数active function(比如sigmod function)。然后进入输出层。
其中权重weight和偏置bias属于参数,只存在于隐藏层,可调。
如果将参数去掉,得到的就是一个网络结构。网络结构很重要,如果不能获取正确的网络结构,那么怎么调整都没有意义。
(我们跟猴子的差距是网络结构,我跟学霸的差距是参数hhhhhhhhhh)
一般输出的最后一个隐层比输入的数据少。
深度学习其实就是一个隐层比较多的神经网络。没啥特别的(X)
输出层的神经元softmax层实际上就是一个夸张了的结果。他甚至没有参数。从n个输出中获取一个概率分布。比如手写识别输出层的一个size为10的数组里面的每个数的概率。
可以自动设计神经网络吗?似乎不行。
这是神经网络的结构。
下面是调整参数部分。
loss是进行调整参数的函数。
首先不能穷举确定参数。方法是梯度下降。
使用梯度下降法等方法。求出导数,然后求出梯度向量。
比如找到一个点,然后找到剃度最大的地方一个步长走起。然后再找剃度最大的地方一个步长走起。
由于局部极小值的存在,不同的初始值会得到不同的结果。所以要有一个随机的扔出去的量。
现在的问题是求梯度。用反向传播求梯度。支持深度学习最重要的算法。