输入输出对模型回传梯度的影响
TL;DR: 输入会影响梯度,输出基本上也都会有影响 输入 如果是线性网络的话,输入其实就是梯度,例如对于函数 y = kx+b 来说,forward时,输入x求y,backward时,求k的梯度,其实就是x。 而目前大部分的网络其最内部的函数就是线性函数(网络模型可以看作多层的嵌套函数) 输出 如果单从一个线性函数 y=kx+b 来说,求k的梯度确实没用到 …
Archive
TL;DR: 输入会影响梯度,输出基本上也都会有影响 输入 如果是线性网络的话,输入其实就是梯度,例如对于函数 y = kx+b 来说,forward时,输入x求y,backward时,求k的梯度,其实就是x。 而目前大部分的网络其最内部的函数就是线性函数(网络模型可以看作多层的嵌套函数) 输出 如果单从一个线性函数 y=kx+b 来说,求k的梯度确实没用到 …
pytorch官方示例程序,使用numpy实现梯度计算 https://pytorch.org/tutorials/beginner/pytorch_with_examples.html
信息量 用于描述事件包含的信息。一件事发生的概率越小,则其信息量越大。如 事件A:“Hunt当选了国家杰出青年称号” 事件B:“Hunt当选了学生会主席” 两个事件都有可能发生,但他们所蕴含的信息是有差别的,比如,若要发生事件A,则Hunt至少满足四个条件:Hunt年龄小于四十五岁、Hunt具有博士学位、Hunt有较好的科研成果、Hunt曾在高校或科研所工作 …
这种情况一般是在使用了交叉熵的二分类问题上容易出现,同样的,也可能出现loss收敛到1.0986、1.386等等,其实他们就是log(1/2)、log(1/3)、log(1/4)。。。 问题概述 根本原因:交叉熵 若 q=0.5 对于 01 分布来说,H=log(0.5)=0.69,同理对于 n 分类问题来说,loss 可能会收敛到 log(1/n),这都是 …
防止过拟合 深度学习模型实际上是在拟合一个函数 f(x1, x2, x3…),可以想象,特征x的系数越小,函数整体就越平滑,即模型对特征x越不敏感,这就是防止过拟合的基本原理。 已知损失函数f(x),求在使得w越小的条件下,f(x)的极小值,这就是约束条件下的极值问题,可以使用拉格朗日乘子法。 要使w小,即让其接近0,则可以设g(w)=|w|→0(L1正则) …
一个模型的输入可能很大,每个数都可以看作是一个特征,那么神经网络在训练时怎么知道哪些特征重要哪些不重要呢? 这就好比是我为了考试而复习,我怎么知道哪些知识点重要哪些不重要呢? 事实上也很简单,考试前我确实不知道哪些重要(forward),但考试后我一定是知道的(backward)。第一次考试前我啥都不知道,所以第一次考试时我就记录下考察的知识点,下来就专门针 …
深度学习的本质是,在已知变量x的情况下,求出 \( y = f(w|x) \) 的最优解,绝大部分情况下,都是求f(w|x)的极值。问题就在于,这里所说的极值,是针对哪个自变量的极值。因为前馈神经网络训练过程中分为两步:forward和backward,这两个步骤中的自变量是不一样的。在forward过程中,自变量是x,但在backward过程中,自变量变为 …