#AI夏令营 #Datawhale #夏令营
不同的Sigmoid 函数叠起来以后就可以去逼近各种不同的分段线性函数;分段线性函数可以拿来近似各种不同的连续的函数。如果改 w,就会改变斜率,就会改变斜坡的坡度。如果改了 b,就可以把这一个 Sigmoid 函数左右移动;如果改 c,就可以改变它的高度。所以只要有不同的 w 不同的 b 不同的 c,就可以制造出不同的 Sigmoid 函数,从而近似不同的连续的函数。 我们可以不只用一个特征 x1,可以用多个特征代入不同的 c, b, w,组合出各种不同的函数,从而得到更有灵活性(flexibility)的函数。 Sigmoid 越多可以产生有越多段线的分段线性函数,可以逼近越复杂的函数。Sigmoid 的数量也是一个超参数。 我们可以用矩阵跟向量相乘的方法,写一个比较简洁的写法。
用 θ 来统设所有的参数,所以损失函数就变成 L(θ)。 |
实际使用梯度下降的时候,会把 N 笔数据随机分成一个一个的批量(batch),一组一组的。每个批量里面有 B 笔数据,所以本来有 N笔数据,现在 B 笔数据一组,一组叫做批量。本来是把所有的数据拿出来算一个损失,现在只拿一个批量里面的数据出来算一个损失,记为 L1 跟 L 以示区别。假设 B 够大,也许 L 跟L1 会很接近。所以实现上每次会先选一个批量,用该批量来算 L1,根据 L1 来算梯度,再用梯度来更新参数,接下来再选下一个批量算出 L2,根据 L2 算出梯度,再更新参数,再取下一个批量算出 L3,根据 L3 算出梯度,再用 L3 算出来的梯度来更新参数。所以并不是拿 L 来算梯度,实际上是拿一个批量算出来的 L1, L2, L3 来计算梯度。把所有的批量都看过一次,称为一个回合(epoch),每一次更新参数叫做一次更新。更新跟回合是不同的东西。每次更新一次参数叫做一次更新,把所有的批量都看过一遍,叫做一个回合。 |
HardSigmoid 可以看作是两个修正线性单元(Rectified Linear Unit,ReLU)的加总。在机器学习里面,Sigmoid 或 ReLU 称为激活函数(activation function)。 具体例子理解: 上面的Relu斜线延申y值分别是 11、12、13…… 下面的Relu斜线对应y值分别是 -1、-2、-3…… 那么用这两个Relu斜线部分合成就是 Hard Sigmoid 函数第三段(平的) 即:11-1 =12-2 =13-3 =……=10 Sigmoid 或 ReLU 称为神经元(neuron),很多的神经元称为神经网络(neural network)。Sigmoid 跟 ReLU 是最常见的激活函数,ReLU更好一点。 训练数据和测试数据上的结果是不一致,这种情况称为过拟合(overfitting)。要预测未知的数据,选 3 层的网络还是 4 层的网络呢?假设今天是 2 月 26日,今天的观看次数是未知的,如果用已经训练出来的神经网络预测今天的观看次数。要选 3层的,虽然 4 层在训练数据上的结果比较好,但在没有看过的数据的结果更重要。应该选一个在训练的时候,没有看过的数据上表现会好的模型,所以应该选 3 层的网络。深度学习的训练会用到反向传播(BackPropagation,BP),其实它就是比较有效率、算梯度的方法。 |
这个夏令营不简单 #AI夏令营 #Datawhale #夏令营 |