大家好,我是微学AI,今天给大家介绍一下神经网络的基本知识。

目录

一、神经网络案例

二、神经网络仿生学

三、神经网络具体结构:

1.输入层

2.隐含层

3.输出层

四、神经网络的数学计算

网络结构

具体案例

五、神经网络的实现代码

六、神经网络涉及的内容


一、神经网络案例

神经网络就像一个人,它可以从外部获取输入信息并将其转换为内部结构,以便在不同的情况下做出正确的决定。神经网络也像一个掌握语言的机器,它能够接受输入,模仿人类的学习方式,从而学习和记忆特定的输入和输出之间的关系。

例如,当一个人面对一棵大树时,他可以从外部视觉输入中获取信息,并基于这些信息来做出决定,例如攀爬树或不攀爬树。这就是神经网络所做的,它们可以收集外部信息,转换它们,并基于这些信息做出正确的决定或预测。

假设你正在教给一个神经网络英语语法,它可以接受单词的输入,比如“dog”,并输出正确的单复数形式,即“dogs”。它可以通过模仿人类学习的方式,记住单词和它们的正确形式之间的关系,并继续输出正确的单复数形式。

二、神经网络仿生学

生物神经网络的仿生学原理基于人类神经系统的结构和功能,其中包括具有学习和记忆能力的神经元/突触,神经元细胞之间的连接,以及神经元细胞的反应和传递信号的机制。从这个角度来看,生物神经网络的仿生学原理包括以下几点:
1. 神经元/突触:生物神经网络仿生学原理的最基本元素是神经元/突触,即神经元细胞之间的连接。这些神经元/突触可以通过权重来表示神经元之间的连接强度。
2. 学习:神经网络可以通过学习来调整连接权重,以便能够更有效地完成特定任务。
3. 记忆:人类神经系统有一种能力,可以将已经学习过的信息储存,以便在未来可以更快地推断出结果。同样,生物神经网络也可以学习和记忆信息,从而更有效地完成特定任务。
4. 传递信号:人类神经系统可以通过传递神经元信号来传递信息,以便完成特定任务。同样,生物神经网络也可以传递神经元信号,从而完成特定任务。

三、神经网络具体结构:

神经网络的原理主要可以分为三个层次:输入层、隐含层和输出层。


1.输入层

神经网络的输入层由输入单元组成,它们接收外部环境的输入信号,并将其转化为神经网络可以理解的信号。


2.隐含层

隐含层是神经网络的核心,它由多个神经元组成,它们可以接收输入层传来的信号,并对其进行加工处理,以便识别出有用的信息,并将其输出给输出层。


3.输出层

输出层由输出单元组成,它们从隐含层接收到的信号,并将其转化为结果输出,以便外部环境对其进行处理。
神经网络通过反复调整连接权重和神经元参数,以调整信号在各个神经元之间传递的强度,从而使神经网络能够实现复杂的任务,实现自动化处理信息的目标。

四、神经网络的数学计算

下面举一个案例,神经网络有有3个输入,2个输出,1个隐藏层,隐藏层有4个神经元:

下面用一个简单的三层神经网络(1个隐藏层)举例说明数学计算过程。

网络结构


输入层:3个神经元(记为 x_1, x_2, x_3
隐藏层:4个神经元(记为h_1, h_2, h_3, h_4
输出层:2个神经元(记为y_1, y_2

1. 参数定义
输入到隐藏层的权重矩阵W^{(1)}:4×3 矩阵
隐藏层的偏置b^{(1)}:4×1 向量
隐藏到输出层的权重矩阵 W^{(2)}:2×4 矩阵
-输出层的偏置b^{(2)}:2×1 向量

2. 数学公式

输入层到隐藏层
z^{(1)} = W^{(1)} x + b^{(1)}
h = f(z^{(1)})
其中,f是激活函数(如ReLU或sigmoid)。

隐藏层到输出层


z^{(2)} = W^{(2)} h + b^{(2)}
y = g(z^{(2)})
其中,g是输出层的激活函数(如softmax或sigmoid)。

具体案例

假设:
输入:x = \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}
W^{(1)} = \begin{bmatrix} 0.1 & 0.2 & 0.3 \\ 0.4 & 0.5 & 0.6 \\ 0.7 & 0.8 & 0.9 \\ 1.0 & 1.1 & 1.2 \end{bmatrix}
b^{(1)} = \begin{bmatrix} 0.1 \\ 0.2 \\ 0.3 \\ 0.4 \end{bmatrix}
- 激活函数f取ReLU:f(x) = \max(0, x)
W^{(2)} = \begin{bmatrix} 0.1 & 0.2 & 0.3 & 0.4 \\ 0.5 & 0.6 & 0.7 & 0.8 \end{bmatrix}
b^{(2)} = \begin{bmatrix} 0.1 \\ 0.2 \end{bmatrix}
输出层激活函数g取恒等映射(即不变)

步骤1:输入到隐藏层
z^{(1)} = W^{(1)} x + b^{(1)} = \begin{bmatrix} 0.1*1 + 0.2*2 + 0.3*3 + 0.1 \\ 0.4*1 + 0.5*2 + 0.6*3 + 0.2 \\ 0.7*1 + 0.8*2 + 0.9*3 + 0.3 \\ 1.0*1 + 1.1*2 + 1.2*3 + 0.4 \end{bmatrix}
计算得:
第一行:0.1 + 0.4 + 0.9 + 0.1 = 1.5
第二行:0.4 + 1.0 + 1.8 + 0.2 = 3.4
第三行:0.7 + 1.6 + 2.7 + 0.3 = 5.3
第四行:1.0 + 2.2 + 3.6 + 0.4 = 7.2

所以
z^{(1)} = \begin{bmatrix} 1.5 \\ 3.4 \\ 5.3 \\ 7.2 \end{bmatrix}
h = f(z^{(1)}) = \begin{bmatrix} 1.5 \\ 3.4 \\ 5.3 \\ 7.2 \end{bmatrix}
(ReLU激活,全部为正,值不变)

步骤2:隐藏层到输出层
z^{(2)} = W^{(2)} h + b^{(2)} = \begin{bmatrix} 0.1*1.5 + 0.2*3.4 + 0.3*5.3 + 0.4*7.2 + 0.1 \\ 0.5*1.5 + 0.6*3.4 + 0.7*5.3 + 0.8*7.2 + 0.2 \end{bmatrix}
第一行:
0.15 + 0.68 + 1.59 + 2.88 + 0.1 = 5.4

第二行:
0.75 + 2.04 + 3.71 + 5.76 + 0.2 = 12.46

z^{(2)} = \begin{bmatrix} 5.4 \\ 12.46 \end{bmatrix}
y = g(z^{(2)}) = \begin{bmatrix} 5.4 \\ 12.46 \end{bmatrix}
输入x经过权重和偏置线性变换、激活函数,得到隐藏层输出h
隐藏层输出h再经过权重和偏置线性变换、激活函数,得到最终输出y

五、神经网络的实现代码

神经网络有有3个输入,2个输出,1个隐藏层,隐藏层有4个神经元的代码实现

import numpy as np
# 输入层-隐藏层的权重
weights_input_hidden = np.array([[1, 2, 3, 4],
                                [2, 3, 4, 5],
                                [3, 4, 5, 6]])
# 隐藏层-输出层的权重
weights_hidden_output = np.array([[1, 2],
                                 [2, 3],
                                 [3, 4],
                                 [4, 5]])
# 输入值
input_data = np.array([2, 3, 4])
# 定义激活函数
def sigmoid(x):
    return 1.0/(1.0 + np.exp(-x))
# 计算隐藏层的输出
hidden_layer_input = np.dot(input_data, weights_input_hidden)
hidden_layer_output = sigmoid(hidden_layer_input)
# 计算输出层的输出
output_layer_input = np.dot(hidden_layer_output, weights_hidden_output)
output = sigmoid(output_layer_input)
print(output)

六、神经网络涉及的内容

学习神经网络的初步知识需要掌握以下几个方面的知识,这些之前课程有涉及一些:

1.线性代数:神经网络中常用的矩阵运算,例如矩阵乘法,线性方程组的求解等都需要用到线性代数的知识。

2.神经网络的基础概念:包括人工神经元、权重、激活函数、正则化、损失函数等。

3.梯度下降算法:神经网络的训练过程中,常常需要使用梯度下降算法来最小化损失函数。需要了解梯度下降算法的原理以及如何应用。

4.神经网络的基本结构:需要了解神经网络的基本构成,包括输入层,隐藏层,输出层,权重,偏置等概念。

5.前向传播算法:了解如何使用神经网络进行预测,包括使用权重和偏置计算输入到隐藏层的信号,以及使用激活函数对信号进行非线性变换。

6.反向传播算法:了解如何使用反向传播算法计算损失函数对权重和偏置的梯度,以便使用梯度下降算法进行训练。

7.激活函数:了解常用的激活函数,包括 Sigmoid 函数,Tanh 函数,ReLU 函数,softmax函数等;

8.神经网络的架构:常用的神经网络架构,如卷积神经网络CNN、循环神经网络RNN、长短期记忆网络等LSTM。

9. 神经网络的应用:图像分类、语音识别、自然语言处理等。
10. 神经网络的实现框架:TensorFlow、PyTorch、Paddle等。

往期作品:

 一、人工智能基础部分

1.人工智能基础部分1-人工智能的初步认识

2.人工智能基础部分2-一元一次函数感知器

3.人工智能基础部分3-方差损失函数的概念

4.人工智能基础部分4-梯度下降和反向传播

5.人工智能基础部分5-激活函数的概念

6.人工智能基础部分6-神经网络初步认识

7.人工智能基础部分7-高维空间的神经网络认识

8.人工智能基础部分8-深度学习框架keras入门案例

9.人工智能基础部分9-深度学习深入了解

10.人工智能基础部分10-卷积神经网络初步认识

11.人工智能基础部分11-图像识别实战

12.人工智能基础部分12-循环神经网络初步认识

13.人工智能基础部分13-LSTM网络:自然语言处理实践

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐