什么是神经网络?神经网络开发框架:PyTorch 和架构 Transformer 的区别和联系

人工智能
事实上所谓的神经网络本质上就是一个数学模型,里面涉及大量的数学运算;只不过其运算的主要数据类型是——向量,具体表现为多维矩阵。

我们都知道大模型的本质是一个神经网络模型,因此我们学习大模型就是在学习神经网络模型;但了解了很多关于神经网络的理论,但大部分人对神经网络都没有一个清晰的认识,也就是说神经网络到底是什么?它长什么样?

事实上所谓的神经网络本质上就是一个数学模型,里面涉及大量的数学运算;只不过其运算的主要数据类型是——向量,具体表现为多维矩阵。

PyTorch和Transformer

在神经网络的学习研究过程中,有两个东西是绕不过去的;一个是PyTorch神经网络开发框架,另一个就是Transformer神经网络架构。它们两者之间的关系就类似于编程语言和算法之间的关系,PyTorch就是编程语言;而Transformer就是算法。

Transformer即可以通过PyTorch框架实现,也可以通过其它框架实现,比如Tensorflow;PyTorch也可以实现其它的网络架构模型,比如CNN和RNN等。

因此,PyTorch也被称为科学计算框架,原因就在于神经网络的本质就是数学模型,而数学模型就是不停地做科学计算。

如下就是一个简单的使用PyTorch实现的简单神经网络模型,从代码中可以看出,一个神经网络主要由两部分组成,init初始化方法和forward前向传播方法。

import torch
import torch.nn as nn


# 定义简单的神经网络架构
class SimpleNeuralNetwork(nn.Module):
    def __init__(self):
        super(SimpleNeuralNetwork, self).__init__()
        self.layer1 = nn.Linear(10, 5)  # 输入层10维,输出5维
        self.layer2 = nn.Linear(5, 2)   # 隐藏层5维,输出2维


    def forward(self, x):
        x = torch.relu(self.layer1(x))  # 使用ReLU激活函数
        x = self.layer2(x)              # 输出层不需要激活函数
        return x


# 创建模型实例并输出网络结构
model = SimpleNeuralNetwork()
print(model)

在init方法中主要用来初始化一些参数,以及神经网络的网络层;比如Linear就是一个线性神经网络层——也叫做全连接层。

而forward方法就用来做一些科学计算,也就是神经网络模型中的传播算法等。比如上面代码中,就是对目标数据x先使用layer1网络层做一次线性变换,然后再使用relu函数进行激活。之后在使用layer2线性网络做一次线性变换,最终返回变换之后x的值。

在神经网络中,除了输入层与输出层之外;任何一层网络的输入都来自上层网络的输出;而任何一层网络的输出就是下层网络的输入。

所以,神经网络的核心就是:“将现实问题转化为数学问题,通过求解数学问题,从而解决现实问题”。

但是,为什么多维矩阵在经过多层神经网络的多次变换之后,就能够“理解”自然语言,“看懂”图片和视频;这个就是Transformer等神经网络架构需要解决的问题了。

从外面来看,神经网络就是一个黑盒,我们输入一些数据,然后神经网络这个黑盒就能根据某种规则给我们生成一些新的数据;但我们并不知道神经网络中到底发生了什么。

但把这个黑盒打开之后就可以看到,Transformer这个黑盒是由Encoder-Decoder编码器和解码器组成的;而编码器和解码器又由更小的组件组成——比如多头注意力,残差层等组成。

如上图所示就是Transformer论文提供的经典架构图;详细说明了Transformer的编码器和解码器是怎么构成的。

因此,PyTorch和Transformer的关系就是工具和理论的关系;没了工具就无法制造出神经网络,而没有理论神经网络就无法解决实际问题;这里PyTorch就是制造神经网络的工具;而Transformer就是让神经网络能够正常运行的理论。

责任编辑:赵宁宁 来源: AI探索时代
相关推荐

2021-09-24 12:00:40

人工智能AI神经网络

2018-07-03 16:10:04

神经网络生物神经网络人工神经网络

2022-07-28 09:00:00

深度学习网络类型架构

2021-10-26 09:00:00

图形机器学习深度学习

2023-09-17 23:09:24

Transforme深度学习

2017-04-26 08:31:10

神经网络自然语言PyTorch

2022-05-20 11:01:06

模型性能框架

2020-05-29 17:21:33

神经网络学习函数

2020-08-06 10:11:13

神经网络机器学习算法

2018-08-30 09:15:42

人工智能神经网络深度学习

2018-08-13 09:00:00

人工智能机器学习神经网络

2017-09-10 07:07:32

神经网络数据集可视化

2020-12-19 11:05:57

循环神经网络PyTorch神经网络

2017-05-04 18:30:34

大数据卷积神经网络

2019-05-07 19:12:28

机器学习神经网络Python

2022-04-07 09:01:52

神经网络人工智能

2023-06-18 23:00:39

神经网络损失函数随机变量

2023-04-19 10:17:35

机器学习深度学习

2020-12-21 08:00:00

人工智能深度学习神经网络

2018-02-05 08:58:36

Python神经网络识别图像
点赞
收藏

51CTO技术栈公众号