My solution
1.softmax
(a)sotfmax的性质
容易证明该性质。
Note指出,这个性质可以应用于计算softmax函数的值。这样手动把最大值调整成了0,避免了上溢出,而即使产生下溢出,也是下溢出到零,不会太损失精度。
(b)softmax的计算
Note指出numpy的向量化计算比较快,所以尽量少用for循环。numpy向量化运算相比循环,跳转逻辑更少,更容易并行,也更容易使用显卡算力,计算更快。
另外,代码要注意numpy库中的维度设定,运算的时候要时刻注意维度。
2.Neural Network Basics
(a)sigmoid的导数
σ′(x)=−(1+e−x)′(1+e−x)2=e−x(1+e−x)2=σ(x)(1−σ(x))
(b)交叉熵函数的导数
∂CE∂θ=∂(−log(y^k))∂θ=−1y^k∂y^k∂θ
对下标分别标量求导
∂y^k∂θk=(eθk)′∑ieθi−eθk(∑ieθi)′(∑ieθi)2