《深度学习入门——基于python的理论与实现》读书笔记(三)

神经网的节点,神经元

如图所示,神经元与感知机的区别是激活函数,即h,不同。感知机的激活函数是阶跃函数:

对应感知机部分出现的阈值函数: 

     y= \begin{cases} 0& \test{w_1x_1+w_2x_2\leq0}\\ 1& \text{other} \end{cases}

而神经元使用sigmoid函数:

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

还可以使用ReLU:

输出层处理

softmax, 柔和的最大值

对整个数组使用,转化为e的幂,再计算占比。公式为,

y_k=\frac{e^{a_k}}{\sum_{i=1}^{n}e^{a_i}}

在分类问题中,神经网络为每个类别输出一个预测值。这个预测值组成的数组经softmax处理后,可以看作每个类别的概率。当然,由于指数函数单调递增,看作概率的隐含的前提是,本来某类别的预测值越大表示该类别的可能性越大(对某个输入来说)。

softmax计算中间结果过大

由于指数函数的参与,一个稍大些的正数就会使浮点数溢出。解决办法是,

这里,可以令

                                                                                        C^{'}=-mean(a_i)

即,通过预处理,使数据的均值为零,

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
  • 分类问题中,一般将输出层的神经元数量设置为要分类的类别数

猜你喜欢

转载自blog.csdn.net/weixin_42156883/article/details/86638115
今日推荐