神经网的节点,神经元
如图所示,神经元与感知机的区别是激活函数,即h,不同。感知机的激活函数是阶跃函数:
对应感知机部分出现的阈值函数:
而神经元使用sigmoid函数:
def sigmoid(x):
return 1 / (1 + np.exp(-x))
还可以使用ReLU:
输出层处理
softmax, 柔和的最大值
对整个数组使用,转化为e的幂,再计算占比。公式为,
在分类问题中,神经网络为每个类别输出一个预测值。这个预测值组成的数组经softmax处理后,可以看作每个类别的概率。当然,由于指数函数单调递增,看作概率的隐含的前提是,本来某类别的预测值越大表示该类别的可能性越大(对某个输入来说)。
softmax计算中间结果过大
由于指数函数的参与,一个稍大些的正数就会使浮点数溢出。解决办法是,
这里,可以令
即,通过预处理,使数据的均值为零,
def softmax(x):
c = np.mean(x) # 防止溢出
exp_x = np.exp(x - c)
sum_exp_x = np.sum(exp_x) # 计算总和
return exp_x / sum_exp_x # 计算占比
MINST数据集
著名的手写数字图像集。
小结
- 神经网络的预测被称为向前传播
- 神经网络使用sigmoid或ReLU作激活函数
- 回归问题和分类问题是典型的机器学习问题
- 输出层的激活函数,回归问题一般用恒等函数;分类问题一般用softmax
- 分类问题中,一般将输出层的神经元数量设置为要分类的类别数