神经网络有三层
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 函数的输出解释为“概率”。
文章图片
推荐阅读
- 深度学习|循环神经网络(RNN)实现股票预测
- 神经网络|神经网络方法研究及应用,神经网络算法简单例子
- 深度学习|神经网络讲解与实例,如何理解神经网络
- 深度学习|迁移学习 & 凯明初始化
- yolov5|跑yolov5又出啥问题了(1)p,r,map全部为0
- 深度学习|Python21天学习挑战赛Day(11)·爬虫入门知识(应用)
- python|6.3 阈值处理-- Otsu 处理
- 深度学习|yolov5之魔化修改
- pytorch|【pytorch笔记】(五)自定义损失函数、学习率衰减、模型微调