其他的调整网络的技巧
技巧有很多,但是简单常用的不多。
首先说说对于随即梯度下降的不同变换,梯度下降其实就是用c来对于单独的一个w进行变换,但是我们如果考虑到对于不同的两个或者更多的w之间的关系呢?实际上就是用c对于多个w求多个偏导数。
Momentu就是二阶导数,原来的学习是使用c直接对于w进行修改,但是现在相当于多了一个屏障。原来走的每一步的步长实际上是和c直接相关的,但是通过momentum,加了一个代理,就是c调整一个中间的变量,中间变量再修改整体的w的值,所以再这样的情况下能够非常好的实现一个控制。
比如说我们想象一辆行驶的汽车,原来的w和c直接相关,可能一不小心就走多了,因为我们需要超像某个方向,方向是由c对w求偏导来决定的,走多少是学习率来决定的。但是这个带来的一个问题就是到底参数互相之间什么关系,要不要也微微调整以下。
其实这个也没太理解。
再有就是如何去最小化损失函数:
conjugate gradient descent , BFGS , 或者nesterov’s
accelerate gradient technique。
Sigmoid能不能换呢?其实tanh也许更好,因为对于sigmoid来说,激活的都是大于0的,这就意味着如果某个神经元是某个值,那么和这个相连的前一层的结果就都是同时增加或者减少的。而且tanh其实是sigmoid的一个缩放。还有一个比较神奇的东西就是relu(rectified linear unit)。
我们还没有明确的知道为什么这些是管用的,不过我们会继续探索。
下面问题来了:
1. 到底怎么解释这些,为什么激活函数这个就可以,有没有更好的?哪个是最好的?还是和数据有关?
时间: 2024-10-14 08:20:50