[Deep Learning]卷积神经网络的详细理解
Deep Learning has 3 steps:
Step1 |
step2 | step3 |
define a set of function(neural network) | goodness of function | pick the best function |
How to connect the neurals?怎么把神经元连接起来?
最常见的方式是全连接前馈神经网络。Fully connect feedforward network.
所以神经网络用一句话概括就是:Given network structure,define a function set.
核心就是一组函数。
这组函数怎么选,函数的参数怎么设置,就变得至关重要。
为什么叫“Deep”?Deep=Many hidden layers。
上图的全连接网络的所有参数可以用矩阵来表示,这样GPU运算矩阵的优势就充分凸显了。
(是sigmoid函数的意思。)
一个完整的神经网络
图例:
基本框架结构:
softmax层的作用是什么?
[引用知乎链接:https://www.zhihu.com/question/294679135/answer/885285177]
在这篇文章下的某个评论提出不同的观点!把神经网络的数学模型从左到右推导一遍或许会有神奇的发现!
首先,softmax 的作用是把 一个序列,变成概率。
他能够保证:
- 所有的值都是 [0, 1] 之间的(因为概率必须是 [0, 1])
- 所有的值加起来等于 1
从概率的角度解释 softmax 的话,就是
PyTorch,TensorFlow中对于softmax是这样描述的:
take logits and produce probabilities
logits
有些地方还称之为 unscaled log probabilities
。(没有限定范围的log概率。)为什么说是log呢?
原因有两个:
- 因为 全连接层 出来的结果,其实是*的(有正有负),这个跟概率的定义不一致,但是你如果他看成 概率的 log,就可以理解了。
- softmax 的作用,我们都知道是 normalize probability。在 softmax 里面,输入 都是在指数上的 ,所有把 想成 log of probability 也就顺理成章了。
3.我觉得1的解释可以理解为hidden layer的**函数sigmoid中的log。(不知道对不对)
softmax,顾名思义就是 soft 版本的 argmax。我们来看一下为什么?
举个栗子,假如 softmax 的输入是:
softmax 的结果是:
我们稍微改变一下输入,把 3 改大一点,变成 5,输入是
softmax 的结果是:
可见 softmax 是一种非常明显的 “马太效应”:强(大)的更强(大),弱(小)的更弱(小)。假如你要选一个最大的数出来,这个其实就是叫 hardmax。那么 softmax 呢,其实真的就是 soft 版本的 max,以一定的概率选一个最大值出来。在hardmax中,真正最大的那个数,一定是以1(100%) 的概率被选出来,其他的值根本一点机会没有。但是在 softmax 中,所有的值都有机会被作为最大值选出来。只不过,由于 softmax 的 “马太效应”,次大的数,即使跟真正最大的那个数差别非常少,在概率上跟真正最大的数相比也小了很多。
所以,前面说,“softmax 的作用是把 一个序列,变成概率。” 这个概率不是别的,而是被选为 max 的概率。
这种 soft 版本的 max 在很多地方有用的上。因为 hard 版本的 max 好是好,但是有很严重的梯度问题,求最大值这个函数本身的梯度是非常非常稀疏的(比如神经网络中的 max pooling),经过hardmax之后,只有被选中的那个变量上面才有梯度,其他都是没有梯度。这对于一些任务(比如文本生成等)来说几乎是不可接受的。所以要么用 hard max 的变种,比如 Gumbel,
什么是cross entropy?
[为什么交叉熵(cross-entropy)可以用于计算代价? - 微调的回答 - 知乎 https://www.zhihu.com/question/65288314/answer/244557337]