saddle point 鞍点
可能对x维度是极小值,对y维度是极大值,不能搜索到全局最小值,比局部极小值更可怕
初始状态不同影响最终找到的是局部极小值还是全局最小值 一定要初始化 可以使用主流初始化方法
步长影响速度和精度。太大可能会直接跨过最小值,导致不收敛 先设置小一点0.01,如果收敛再慢慢增大
逃出局部最小值 escape minima 添加动量(惯性)
v1是梯度引导的方向 v2是原来的方向。添加动量使得继续朝偏向v2方向前进,冲出局部极小值。
激活函数
灵感来自青蛙神经元。青蛙神经元有多个输入,加权求和以后,大于某个值会做出反应,并且输出响应固定。
激活函数不可导
sigmoid函数
a = torch.linspace(-100,100,10) #在指定的间隔内返回均匀间隔的数字
a
tensor([-100.0000, -77.7778, -55.5556, -33.3333, -11.1111, 11.1111,
33.3333, 55.5555, 77.7778, 100.0000])
b=torch.sigmoid(a)
b
tensor([0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 1.0000, 1.0000, 1.0000,
1.0000])
tanh函数
a = torch.linspace(-1,1,10)
torch.tanh(a)
relu函数
由于导数是1,可以保持梯度不变,不会导致梯度离散和梯度爆炸。