开始认识人工智能(一)

核动力骡子 2024-08-09 16:01:02 阅读 58

一、AI发展史简介

早期探索(1950年代-1960年代)

1950年代初,艾伦·图灵等人开始探讨机器是否能展现智能。1956年,达特茅斯会议上,John McCarthy、Marvin Minsky、Nathaniel Rochester和Claude Shannon等人提出了“人工智能”这一术语。这一时期集中于基础概念的探索,如逻辑推理、问题解决和符号处理。

知识表示和推理(1970年代-1980年代)

1970年代,AI研究开始专注于知识表示和推理。这一时期发展了专家系统,试图通过规则和知识库来模拟人类专家的决策过程。

连接主义的兴起(1980年代)

1980年代初,连接主义(neural networks)重新受到关注,这种方法试图模拟人脑神经元网络的工作原理。然而,由于当时计算能力不足,这一方法并没有立即得到广泛应用。

知识爆炸和复兴(1990年代-2000年代)

1990年代初,随着计算机性能的提升和互联网的发展,AI进入了一个新的阶段。搜索引擎的出现和数据的爆炸式增长促进了机器学习和数据驱动方法的发展。

大数据和深度学习(2010年代-2017年)

2010年代以来,由于大数据的可用性和计算能力的增强,深度学习(deep learning)开始崛起。深度学习利用大规模数据和多层神经网络进行模式识别和决策制定,大大提高了许多AI应用的性能。

大规模预训练模型(2017年-至今)

               1、2017年,自然语言处理NLP的Transformer框架出现

               2、2018年,Bert和GPT的出现

               3、2022年,chatGPT的出现,进入到大模型AIGC发展的阶段

二、什么是深度学习

           深度学习是机器学习的一个子集。为了更好地理解这种关系,我们可以将它们放在人工智能(AI)的大框架中来看。

        机器学习是实现人工智能的一种途径,深度学习是机器学习的一个子集,也就是说深度学习是实现机器学习的一种方法。与机器学习算法的主要区别如下图所示:

        传统机器学习算术依赖人工设计特征,并进行特征提取,而深度学习方法不需要人工,而是依赖算法自动提取特征。深度学习模仿人类大脑的运行方式,从经验中学习获取知识。这也是深度学习被看做黑盒子,可解释性差的原因。随着计算机软硬件的飞速发展,现阶段通过深度学习来模拟人脑来解释数据,包括图像,文本,音频等内容。目前深度学习的主要应用领域有:1.语音识别2.机器翻译3.自动驾驶当然在其他领域也能见到深度学习的身影,比如风控,安防,智能零售,医疗领域,推荐系统等。

三、Pytorch介绍

1、什么是Pytorch

1.PyTorch是一个开源机器学习和深度学习框架。

PyTorch允许您使用Python代码操作和处理数据并编写深度学习算法,能够在强大的GPU加速基础上实现张量和动态神经网络。

2. PyTorch是一个基于Python的科学计算包,使用Tensor作为其核心数据结构,类似于Numpy数组。不同的是,PyTorch可以用GPU来处理数据,提供许多深度学习的算法。

3. PyTorch提供了完整的使用文档、循序渐进的用户指南,作者亲自维护PyTorch论坛,方便用户交流和解决问题。

4. Meta(前Facebook)人工智能研究院FAIR对PyTorch的推广提供了大力支持。作为当今排名前三的深度学习研究机构,FAIR的支持足以确保PyTorch获得持续开发、更新的保障,不至于像一些个人开发的框架那样昙花一现。如有需要,我们也可以使用Python软件包(如NumPy、SciPy和Cython)来扩展PyTorch。

5.相对于TensorFlow,PyTorch的一大优点是它的图是动态的,而TensorFlow框架是静态图,不利于扩展。同时,PyTorch非常简洁,方便使用。

6.如果说TensorFlow的设计是“Make it complicated”,Keras的设计是“Make it complicated and hide it”,那么PyTorch的设计则真正做到了“Keep it simple,stupid”。

四、张量的基本使用

1、什么是张量

张量,英文为Tensor,是机器学习的基本构建模块,是以数字方式表示数据的形式。PyTorch就是将数据封装成张量(Tensor)来进行运算的。PyTorch中的张量就是元素为同一种数据类型的多维数组。在PyTorch中,张量以"类"的形式封装起来,对张量的一些运算、处理的方法被封装在类中。

0维张量:将标量转化为张量得到的就是0维张量

1维张量:将向量转化为张量得到的就是1维张量

2维张量:将矩阵转化为张量得到的就是2维张量

多维张量:将多维数组转化为张量得到的就是多维张量

<code>import torch

# 0维张量:标量(scalar)

scalar = torch. Tensor(7)

print(scalar.ndim) #0

# 1维张量:向量(vector)

vector = torch. Tensor([7,7])

print(vector.ndim) #1

# 2维张量:矩阵

(matrix)matrix= torch. Tensor([[7,8],[9,10]])

print(matrix.ndim) #2

#多维张量

tensor = torch. Tensor([[[1, 2,3],

[3,6,9],

[2,4,5]]])

print(tensor.ndim) #3

2、张量的基本创建方式

torch.tensor根据已有数据创建张量t

orch.Tensor根据形状创建张量,其也可用来创建指定数据的张量

torch.IntTensor、torch.FloatTensor、torch.DoubleTensor创建指定类型的张量

import torch

import numpy as np

#1.根据已有数据创建张量

def test01():

#1.1 创建标量张量

data = torch.tensor(10)

print(data)

# 1.2 numpy 数组,由于 data 为 float64,下面代码也使用该类型

data=np.random.randn(2,3)#2行3列

data = torch.tensor(data)

print(data)

#1.3 列表,下面代码使用默认元素类型 float32

data =[[10.,20.,30.],[40.,50.,60.]]data = torch.tensor(data)

print(data)

#2.创建指定形状的张量

def test02():

# 2.1 创建2行3列的张量,默认 dtype 为 float32

data = torch.Tensor(2,3)

print(data)

#2.2 注意:如果传递列表,则创建包含指定元素的张量

data = torch.Tensor([10])

print(data)

data = torch.Tensor([10,20])

print(data)

def test03():

# 3.1 创建2行3列,dtype为int32 的张量

data = torch.IntTensor(2,3)

print(data)

#3.2 注意:如果传递的元素类型不正确,则会进行类型转换

data =torch.IntTensor([2.5,3.3])

print(data)

#3.3 其他的类型

data = torch.shortTensor() # int16

data = torch.Longrensor() # int64

data = torch.FloatTensor() # float32

data = torch.DoubleTensor() #float64

if __name__ == '__main__':

test01()

test02()

test03()

输出结果:

tensor(10)

tensor([[ 5.0422e-01,1.3642e+00,-1.5213e+00],

[7.6419e-01,-6.7084e-04,1.9425e-03]],dtype=torch. Float64)

tensor([[10.,20.,30.],[40.,50.,60.]])

tensor([[0.,0.,0.],

[0.,0.,0.]])

tensor([10.])

tensor([10.,20.])

tensor([[0,0,0],[0,0,0],dtype=torch.int32)

tensor([2,3],dtype=torch.int32)



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。