深度学习入门笔记-第三章-神经网络

神经网络有三层
1.输入层
2.中间层/隐藏层
3.输出层
如下图
深度学习入门笔记-第三章-神经网络_第1张图片
图中网络有三层神经元构成,但实质上只有两层有权重,因此称为“2层网络”
对于感知机:
在这里插入图片描述b 是被称为偏置的参数,用于控制神经元被激活的容易程度;而 w_1 和 w_2 是表示各个信号的权重的参数,用于控制各个信号的重要性
现在将式(3.1)改写成更加简洁的形式。为了简化式(3.1),我们用一个函数来表示这种分情况的动作(超过 0 则输出 1,否则输出 0)。引入新函数 h(x),将式(3.1)改写成下面的式(3.2)和式(3.3)。
在这里插入图片描述
在这里插入图片描述
h(x)函数会将输入信号的总和转换为输出信号,这种函数一般称为激活函数(activation function)。如“激活”一词所示,激活函数的作用在于决定如何来激活输入信号的总和。
现在来进一步改写式(3.2)。式(3.2)分两个阶段进行处理,先计算输入信号的加权总和,然后用激活函数转换这一总和。因此,如果将式(3.2)写得详细一点,则可以分成下面两个式子。深度学习入门笔记-第三章-神经网络_第2张图片

深度学习入门笔记-第三章-神经网络_第3张图片
激活函数的类型:
1.sigmoid函数:
在这里插入图片描述

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



2.阶跃函数

def step_function(x):
    if x > 0:
        return 1
    else:
        return 0

深度学习入门笔记-第三章-神经网络_第4张图片

3.ReLU函数:
最近使用:ReLU 函数在输入大于 0 时,直接输出该值;在输入小于等于 0 时,输出 0。

在这里插入图片描述

def relu(x):
    return np.maximum(0, x)


深度学习入门笔记-第三章-神经网络_第5张图片
numpy数组实现神经网络:
深度学习入门笔记-第三章-神经网络_第6张图片

>>> X = np.array([1, 2])
>>> X.shape
(2,)
>>> W = np.array([[1, 3, 5], [2, 4, 6]])
>>> print(W)
[[1 3 5]
 [2 4 6]]
>>> W.shape
(2, 3)
>>> Y = np.dot(X, W)
>>> print(Y)
[ 5  11  17]

(这里由于输入层为2层而输出层有3层,所以偏置的矩阵为2x3,由于输入的矩阵为1x2,所以输出矩阵为1x3)
如上所示,使用 np.dot(多维数组的点积),可以一次性计算出Y的结果。这意味着,即便 Y 的元素个数为 100 或 1000,也可以通过一次运算就计算出结果!如果不使用 np.dot,就必须单独计算 Y 的每一个元素(或者说必须使用 for 语句),非常麻烦。因此,通过矩阵的乘积一次性完成计算的技巧,在实现的层面上可以说是非常重要的。

输出层的设计
神经网络可以用在分类问题和回归问题上,不过需要根据情况改变输出层的激活函数。一般而言,回归问题用恒等函数,分类问题用 softmax 函数。
(机器学习的问题大致可以分为分类问题和回归问题。分类问题是数据属于哪一个类别的问题。比如,区分图像中的人是男性还是女性的问题就是分类问题。而回归问题是根据某个输入预测一个(连续的)数值的问题。比如,根据一个人的图像预测这个人的体重的问题就是回归问题(类似“57.4kg”这样的预测)。)
分有恒等函数和softmax函数:
1.恒等函数:
恒等函数会将输入按原样输出,对于输入的信息,不加以任何改动地直接输出。
深度学习入门笔记-第三章-神经网络_第7张图片
2.softmax函数
分类问题中使用的 softmax 函数可以用下面的式(3.10)表示。
在这里插入图片描述
softmax 函数的输出是 0.0 到 1.0 之间的实数。并且,softmax 函数的输出值的总和是 1。输出总和为 1 是 softmax 函数的一个重要性质。正因为有了这个性质,我们才可以把 softmax 函数的输出解释为“概率”。深度学习入门笔记-第三章-神经网络_第8张图片

你可能感兴趣的:(神经网络,深度学习)