机器学习笔记(一)

  1. 神经网络的激活函数必须使用非线性函数
    考虑把线性函数 h(x) = cx 作为激活函数,把y(x) = h(h(h(x)))的运算对应3层神经网络A。这个运算会进行y(x) = c × c × c × x的乘法运算,但是同样的处理可以由y(x) = ax(注意,a = c × c × c)这一次乘法运算(即没有隐藏层的神经网络)来表示。这样一来,加深神经网络的层数就失去了它的意义。

  2. 神经网络的前向处理(forward)
    前向(forward)处理表示的是从输入到输出方向的传递处理,
    后向(backward)处理表示的是从输出到输入方向的传递处理
    前向处理可以通过巧妙地使用NumPy多维数组来实现。通过用前一层的输出(被激活函数转换后的信号)和这一层的权重做内积然后加上这一层的偏置,得到加权和,将加权和用激活函数转换后得到本层神经元的输出,也即下一层神经元的输入。
    在这里插入图片描述

W2 = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0.6]])#W2是第二层权重
B2 = np.array([0.1, 0.2])#B2是第二层偏置
print(Z1.shape) # (3,)#Z1 = sigmoid(A1),Z1是被激活函数sigmoid()转换后的信号,是第一层的输出
print(W2.shape) # (3, 2)
print(B2.shape) # (2,)
A2 = np.dot(Z1, W2) + B2#A代表加权信号和偏置的总和,即加权和
Z2 = sigmoid(A2)#Z2在这里用激活信号将加权和转换
  1. 机器学习的问题大致可以分为分类问题回归问题
    分类问题是数据属于哪一个类别的问题。比如,区分图像中的人是男性还是女性
    的问题就是分类问题。而回归问题是根据某个输入预测一个(连续的)数值的问题。比如,根据一个人的图像预测这个人的体重的问题就是回归问题(类似“57.4kg”这样的预测)。

  2. 输出层所用的激活函数,要根据求解问题的性质决定。一般地,回
    归问题可以使用恒等函数,二元分类问题可以使用 sigmoid函数,
    多元分类问题可以使用 softmax函数。

  3. 实现 softmax函数时的溢出对策
    softmax函数的实现中要进行指数函数的运算,但是此时指数函数的值很容易变得非常大。比如,e的10次方的值会超过20000,e的100次方会变成一个后面有40多个0的超大值,e的1000次方的结果会返回一个表示无穷大的inf。如果在这些超大值之间进行除法运算,结果会出现“不确定”的情况。

>>> a = np.array([1010, 1000, 990])
>>> np.exp(a) / np.sum(np.exp(a)) # softmax函数的运算
array([ nan, nan, nan]) # 没有被正确计算

对策:

>>> c = np.max(a) # 1010
>>> a - c
array([ 0, -10, -20])
>>>
>>> np.exp(a - c) / np.sum(np.exp(a - c))
array([ 9.99954600e-01, 4.53978686e-05, 2.06106005e-09])

通过减去输入信号中的最大值(c),原本为nan(not a number,不确定)的地方现在被正确计算了。

原理:
在这里插入图片描述

在进行softmax的指数函数的运算时,加上(或者减去)某个常数并不会改变运算的结果。

综上,可以像下面这样实现softmax函数

def softmax(a):
 c = np.max(a)
 exp_a = np.exp(a - c) # 溢出对策
 sum_exp_a = np.sum(exp_a)
 y = exp_a / sum_exp_a
 return y
  1. softmax函数的特征
    softmax函数的输出是0.0到1.0之间的实数。并且,softmax函数的输出值的总和是1。输出总和为1是softmax函数的一个重要性质。正因为有了这个性质,我们才可以把softmax函数的输出解释为“概率”。也就是说,通过使用softmax函数,我们可以用概率的(统计的)方法处理问题。
    一般而言,神经网络只把输出值最大的神经元所对应的类别作为识别结果。并且,即便使用softmax函数,输出值最大的神经元的位置也不会变。因此,神经网络在进行分类时,输出层的softmax函数可以省略。在实际的问题中,由于指数函数的运算需要一定的计算机运算量,因此输出层的softmax函数一般会被省略。

参考资料:《深度学习入门–基于python的理论与实现》,【日】斋藤康毅 著,陆宇杰 译

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值