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

神经网络有三层
1.输入层
2.中间层/隐藏层
3.输出层
如下图
神经网络|深度学习入门笔记-第三章-神经网络
文章图片

图中网络有三层神经元构成,但实质上只有两层有权重,因此称为“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)写得详细一点,则可以分成下面两个式子。神经网络|深度学习入门笔记-第三章-神经网络
文章图片

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

激活函数的类型:
1.sigmoid函数:
神经网络|深度学习入门笔记-第三章-神经网络
文章图片

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

2.阶跃函数
def step_function(x): if x > 0: return 1 else: return 0

【神经网络|深度学习入门笔记-第三章-神经网络】神经网络|深度学习入门笔记-第三章-神经网络
文章图片

3.ReLU函数:
最近使用:ReLU 函数在输入大于 0 时,直接输出该值;在输入小于等于 0 时,输出 0。
神经网络|深度学习入门笔记-第三章-神经网络
文章图片

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

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

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

>>> 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) [ 51117]

(这里由于输入层为2层而输出层有3层,所以偏置的矩阵为2x3,由于输入的矩阵为1x2,所以输出矩阵为1x3)
如上所示,使用 np.dot(多维数组的点积),可以一次性计算出Y的结果。这意味着,即便 Y 的元素个数为 100 或 1000,也可以通过一次运算就计算出结果!如果不使用 np.dot,就必须单独计算 Y 的每一个元素(或者说必须使用 for 语句),非常麻烦。因此,通过矩阵的乘积一次性完成计算的技巧,在实现的层面上可以说是非常重要的。
输出层的设计:
神经网络可以用在分类问题和回归问题上,不过需要根据情况改变输出层的激活函数。一般而言,回归问题用恒等函数,分类问题用 softmax 函数。
(机器学习的问题大致可以分为分类问题和回归问题。分类问题是数据属于哪一个类别的问题。比如,区分图像中的人是男性还是女性的问题就是分类问题。而回归问题是根据某个输入预测一个(连续的)数值的问题。比如,根据一个人的图像预测这个人的体重的问题就是回归问题(类似“57.4kg”这样的预测)。)
分有恒等函数和softmax函数:
1.恒等函数:
恒等函数会将输入按原样输出,对于输入的信息,不加以任何改动地直接输出。
神经网络|深度学习入门笔记-第三章-神经网络
文章图片

2.softmax函数
分类问题中使用的 softmax 函数可以用下面的式(3.10)表示。
神经网络|深度学习入门笔记-第三章-神经网络
文章图片

softmax 函数的输出是 0.0 到 1.0 之间的实数。并且,softmax 函数的输出值的总和是 1。输出总和为 1 是 softmax 函数的一个重要性质。正因为有了这个性质,我们才可以把 softmax 函数的输出解释为“概率”。神经网络|深度学习入门笔记-第三章-神经网络
文章图片

    推荐阅读