学习人工智能-基础篇

背景

随着大模型的火爆,人工智能再次被推到高潮,其实它在众多行业领域已经落地很多应用,并给社会带来了巨大的经济价值。其中包括互联网、教育、金融、医疗、交通、物流等等。在测试领域也有一些落地的案例,作为测试人员,有必要去了解并学习人工智能,去挖掘人工智为测试领域解决痛点问题,例如自动化测试用例自动生成、视觉自动化测试、缺陷预测、智能的精准测试等等。

大家经常会听说,人工智能(ArtificialIntelligence,AI)、机器学习(MachineLearning,ML)、深度学习(DeepLearning,DL),但是他们三者是一个什么关系呢,概括来讲,人工智能、机器学习、深度学习覆盖的技术范围是逐层递减的。机器学习是人工智能的一种实现方式,深度学习又是机器学习中最热门的一个分支,并且它可以代替大多数的传统机器学习的算法。

什么是人工智能

人工智能(ArtificialIntelligence,AI)是最宽泛的概念,是用于研发模拟、延伸和扩展人的智能的理论、方法、技术及系统的一门新的技术科学。对于这个定义只阐述了目标,但是没有限定的方法,因此实现人工智能存在诸多的方法和分支。机器学习(MachineLearning,ML)是实现人工智能的一种有效的方式,深度学习(DeepLearning,DL)是机器学习算法中最重要的一个分支,并且它可以替代大多数传统机器学习的算法。

什么是机器学习

关于机器学习的定义,此处引用两位
第一位是人工智能先驱亚瑟·塞缪尔(Arthur Samuel),他在1959年创造了“机器学习”一词[1]。塞缪尔认为,所谓机器学习是指:计算机能够具备根据现有数据构建一套不需要进行显示编程的算法模型来对新数据进行预测的能力。这里所谓不需要进行显示编程是区别于传统程序算法需要人为指定程序的执行过程。

第二位是卡内基梅隆大学的计算机科学家汤姆·迈克尔·米切尔(Tom Michael Mitchell),他给出了一个相较于塞缪尔更加正式与学术的定义。米切尔认为,如果计算机程序能够在任务T中学得经验E并且通过指标P来进行评价,同时根据经验E还能够提升程序在任务T的评价指标P,那么这就是机器学习[2]。这段话对于初学者来说稍微有点拗口,其实际想要表达的就是,如果一个计算机程序能够自己根据数据样本学习获得经验并逐步提高最终的表现结果,那这个过程就被称为是机器学习。

区别于人工智能,机器学习、尤其是监督学习则有更加明确的指代。机器学习是专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构,使之不断改善自身的性能。这句话有点“云山雾罩”的感觉,让人不知所云,下面我们从机器学习的实现和方法论两个维度进行剖析,帮助读者更加清晰地认识机器学习的来龙去脉。

2.1 机器学习的实现
2.1
机器学习的实现可以分成两步:训练和预测,类似于归纳和演绎:

归纳:就是从具体案例中抽象出一般规律,如同机器学习中的训练,从一定数量的样本中(已知模型输入X和模型输出Y),学习输出Y和输入X的关系,类似于某种表达式。

演绎:从一般规律推导出具体案例的结果,如同机器学习中的预测,基于训练得到的Y和X之间的关系,如果出现新的输入X,计算出输出Y,当通过模型计算的输出Y和真实场景的输出一致时,就说明模型就是有效的,如果出现过拟合或者欠拟合的情况下,我们可能需要替换其他的模型算法,继续训练模型。

2.2 机器学习的方法论

机器学习的方法论和人类科研的过程有着异曲同工之妙,下面以“机器从牛顿第二定律实验中学习知识”为例,帮助读者更加深入理解机器学习(监督学习)的方法论本质,即在“机器思考”的过程中确定模型的三个关键要素:假设、评价、优化。
包括 监督学习、无监督学习、半监督学习

例如一个房价的预测

什么是深度学习

深度学习(Deep Learning)(也称为深度结构学习【Deep Structured Learning】、层次学习【Hierachical Learning】或者 深度机器学习【Deep Machine Learning】)是一类算法集合,是机器学习的一个分支。它是基于多层神经网络,借鉴人脑神经元的结构,设计出神经网络模型,在图像识别、绘画识别和对象侦测领域,预测数据准确性有较高的表现。
image.png
图(a)展示了神经网络基本单元-感知机的设计方案,其处理信息的方式与人脑中的单一神经元有很强的相似性;图(b)展示了几种经典的神经网络结构,类似于人脑中多种基于大量神经元连接而形成的不同职能的器官。

对于深度学习,可以在TensorFlow的playground场进行体验,它是一个通过网页浏览器训练的简单神经网络并实现可视化训练过程的工具
http://playground.tensorflow.org

如图是一个逻辑回归分类模型,通过训练,把数据分为两类。增加的每一个节点就是一个神经元,还有增加一层层的深度。

image.png

从图中可以看出,所谓深度学习其实就是将原始特征通过多层神经网络进行抽象特征提取,然后再将提取到的特征输入到最后一层进行回归或者分类处理的过程,核心就是:特征提取。

什么是卷积神经网络

深度学习模型中典型的就是卷积神经网络(convolutional neural network,CNN)。它主要应用是在图像识别方向。还有一个模型是循环神经网络(Recurrent Neural Network,RNN),通常用于自然语言的处理。本文介绍的是卷积神经网络。生成对抗网络、强化学习。
在早期的图像分类任务中,通常是先人工提取图像特征,再用机器学习算法对这些特征进行分类,分类的结果强依赖于特征提取方法,往往只有经验丰富的研究者才能完成.

在这种背景下,基于神经网络的特征提取方法应运而生

卷积神经网络是目前计算机视觉中使用最普遍的模型结构。
卷积神经网络分为:输入层、卷积层、池化层、激活层、全连接层

输入层(Input Layer)、卷积层(CONV Layer)、池化层(Pooling Layer)、ReLU激活层(ReLU Layer)、全连接层(FC Layer)五个层次。

实践Pytorch框卷积神经网络

目前常用的深度学习框架有TensorFlow和PyTorch,TensorFlow
当然,现今任何一个深度学习框架都有其缺点,PyTorch也不例外,对比TensorFlow,其全面性处于劣势,目前PyTorch还不支持快速傅里 叶、沿维翻转张量和检查无穷与非数值张量;针对移动端、嵌入式部署以及高性能服务器端的部署其性能表现有待提升;其次因为这个框 架较新,使得他的社区没有那么强大,在文档方面其C库大多数没有文档。

下面结合图像和代码介绍每一层的含义。

接下来需要安装环境,对于环境的安装,因篇幅原因,不在此介绍,可以到我的博客中查看安装步骤。

安装Anaconda

安装Pytorch及配置Pycharm

我们可以从官网查看详细的可以看官网 https://pytorch.org

输入层
卷积层

如图是一个卷积操作,它的计算方式是
image.png
输入图像55的矩阵
卷积核3
3的矩阵
Stride=1
1*1
接下来我们使用Pytorch框架用代码来实现。

import torch
import torch.nn.functional as Finput = torch.tensor([[0, 0, 75, 80, 80],[0, 75, 80, 80, 80],[0, 75, 80, 80, 80],[0, 70, 75, 80, 80],[0, 0, 0, 0, 0]])# 卷积核
kernel = torch.tensor([[-1, -2, -1],[0, 0, 0],[1, 2, 1]])# 进行尺寸变换:
input = torch.reshape(input, (1, 1, 5, 5))
kernel = torch.reshape(kernel, (1, 1, 3, 3))# 进行卷积,移动步长为1(左移和下移都为1,默认是先右移后下移)
output = F.conv2d(input, kernel, stride=1)
print(output)

运行后的结果:
image.png

池化层

池化层的作用,
最大池化的目的:保留数据特征,同时能把数据量减少

import torch
import torchvision
from torch import nn
from torch.nn import MaxPool2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriterdataset = torchvision.datasets.CIFAR10("./7dataset", train=False, download=True,transform=torchvision.transforms.ToTensor())
dataloader = DataLoader(dataset, batch_size=64)class NN_MaxPool_Model(nn.Module):def __init__(self):super(NN_MaxPool_Model, self).__init__()self.maxpool1 = MaxPool2d(kernel_size=3)def forward(self, input):output = self.maxpool1(input)return outputmaxpool_test = NN_MaxPool_Model()writer = SummaryWriter("../learn/log")
step = 0
for data in dataloader:imgs, targets = datawriter.add_images("input", imgs, step)output = maxpool_test(imgs)writer.add_images("output", output, step)step += 1writer.close()
print("运行完毕")

这个是池化前的输入图像
image.png
这是池化后的输出图像
image.png

经过池化后图像可以隐约的看出是之前的,它的目的是保存数据的特征,但是大大减少了数据量,是训练速度加快,所以一般在卷积之后来一层最大池化。

如果在运行过程中因为网络原因,可能会出现【Pytorch】下载CIFAR10数据集报错:
urllib.error.URLError: <urlopen error name: https>
image.png
因篇幅不在此处展开,可以看我的博客中的查看具体的解决办法,
下载CIFAR10数据集报错

激活层

非线性激活函数
非线性激活,非线性的主要目的就是给我们的网络引入一些非线性特征,非线性越多,越能训练出符合各种曲线或者说是符合各种特征的模型。

import torch
import torchvision
from torch import nn
from torch.nn import Sigmoid
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriterdataset = torchvision.datasets.CIFAR10("./7dataset", train=False,transform=torchvision.transforms.ToTensor(), download=True)dataloader = DataLoader(dataset, batch_size=64)# 创建神经网络
class NN_Sigmoid_Model(nn.Module):def __init__(self):super(NN_Sigmoid_Model, self).__init__()self.sigmoid1 = Sigmoid()def forward(self, input):output = self.sigmoid1(input)return outputnn_sigmoid_mode  = NN_Sigmoid_Model()writer = SummaryWriter("../learn/log")
step = 0for data in dataloader:imgs, targets = datawriter.add_images("input", imgs, global_step=step)output = nn_sigmoid_model(imgs)writer.add_images("output", output, global_step=step)step += 1writer.close()

image.png

flattern展平

线性

全连接层

损失函数和反向传播

优化

经过卷积层的计算后,还要经过 池化层 激活层,最后
卷积神经网络是计算机视觉使用最普遍的模型结构,主要模块包括:
- 卷积
- 池化
- 激活函数层
- 和全连接层
- 线性层
- flattern展平
- 线性
卷积是深度学习的重要技术之一,简单点来说就是先通过多层的全连接进行特征提取,然后通过softmax层进行分类。

搭建一个CIFAR 10 model

后记

本文主要介绍了关于机器学习、深度学习的一些基本定义,本文介绍的也只是冰山的一角,后续会有一些深度学习训练的实例。保持持续学习,学习新的技术,拥抱大模型时代。

参考资料:
《跟我一起学机器学习 》
Pytorch深度学习快速入门教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/215192.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习-逻辑回归

一、引言 逻辑回归(Logistic Regression)是一种广泛应用于分类问题的监督学习算法。尽管名字中含有“回归”二字,但这并不意味着它用于解决回归问题。相反,逻辑回归专注于解决二元或多元分类问题,如邮件是垃圾邮件还是…

2023-12学习笔记

1.NonNull要手动写无参构造器 这是一个我今天研究了很久的问题,开始不知道原因是在这里,还在那想是不是Data覆盖了无参构造,结果当然不是。先说下解决历程 1.问题起因 通过RequestBody接收前端报文的时候报错,大致是说我构造方…

热电厂发电机组常见故障及预测性维护方法

热电厂的发电机组是关键的能源生产设备,在电力供应中扮演着关键角色。但经过长期运行和高负荷工作,一旦发生故障,可能导致停机、设备损坏甚至引发严重事故。因此,实施有效的预测性维护方法对于确保发电机组的稳定运行至关重要。本…

Python从入门到精通五:Python数据容器

数据容器入门 为什么学习数据容器 思考一个问题:如果我想要在程序中,记录5名学生的信息,如姓名。 如何做呢? 学习数据容器,就是为了批量存储或批量使用多份数据 Python中的数据容器: 一种可以容纳多份…

gitee对接使用

1.创建一个文件夹 2.进入Gitee接受对方项目编辑 3.打开终端初始化一开始创建的文件夹 git init 3.1打开终端 3.2输入git.init 4.克隆对方的项目 4.1进入Gitee复制对方项目的路径 4.2在编辑器终端内克隆对方项目 git clone 网址 如此你的编辑器就会出现对方的项目 …

使用pe安装windows操作系统

一、系统安装前准备工作,制作系统盘 (1)拷贝电脑上的资料 (2)准备一个至少8G的U盘 (3)下载windows镜像文件及pe软件 通过百度网盘可下载下列软件及镜像 windows镜像文件(百度网盘…

如何通过SPI控制Peregrine的数控衰减器

概要 Peregrine的数控衰减器PE4312是6位射频数字步进衰减器(DSA,Digital Step Attenuator)工作频率覆盖1MHz~4GHz,插入损耗2dB左右,衰减步进0.5dB,最大衰减量为31.5dB,高达59dBm的IIP3提供了良好的动态性能,切换时间0.5微秒,供电电源2.3V~5.5V,逻辑控制兼容1.8V,20…

容器重启后,Conda文件完整保存(虚拟环境、库包),如何重新安装conda并迁移之前的虚拟环境

Vim安装 容器重启后默认是vi,升级vim,执行命令 apt install -y vim安装 Anaconda 1. 下载Anaconda 其他版本请查看Anaconda官方库 wget https://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2023.03-1-Linux-x86_64.sh --no-check-certificate…

HarmonyOS4.0从零开始的开发教程09页签切换

HarmonyOS(七)页签切换 List组件和Grid组件的使用 Tabs组件的使用 概述 在我们常用的应用中,经常会有视图内容切换的场景,来展示更加丰富的内容。比如下面这个页面,点击底部的页签的选项,可以实现“首页…

研表究明,文字的序顺并不定一能响影GPT-4读阅

深度学习自然语言处理 原创作者:yy 很多年前,你一定在互联网上看过这张图,展示了人脑能够阅读和理解打乱顺序的单词和句子!而最近东京大学的研究发现,大语言模型(LLMs) 尤其是 GPT-4&#xff0c…

MyBatisX插件

MyBatisX插件 MyBatis-Plus为我们提供了强大的mapper和service模板,能够大大的提高开发效率。 但是在真正开发过程中,MyBatis-Plus并不能为我们解决所有问题,例如一些复杂的SQL,多表联查,我们就需要自己去编写代码和SQ…

Redis基础系列-主从复制

Redis基础系列-主从复制 文章目录 Redis基础系列-主从复制1. 什么是 Redis 主从复制?2. 主从复制有什么好处?3. 如何配置 Redis 主从复制?4. 主从复制的验证4.1 如何查看主从搭建成功4.2 主从常见疑问4.3 主从常见命令 5. 主从复制的原理和工…

Go json 差异比较 json-diff(RFC6902)

Go json 差异比较 json-diff(RFC 6902) 毕业设计中过程中为了比较矢量图的差异而依据 RFC 6902 编写的一个包,现已开源: Json-diff 使用 go get -u github.com/520MianXiangDuiXiang520/json-diff序列化与反序列化 与官方 json 包的序列化和反序列化不…

NoSuchColumnFamilyException: org.apache.hadoop.hbase.regionserv

问题 在IDEA运行HBASE脚本时出现如下报错: org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: Column family table does not exist in region hbase:meta,,1.1588230740 i…

深入学习锁--Lock各种使用方法

一、什么是Lock Lock是一个接口,通常所说的可重入锁是指Lock的一个实现子类ReentrantLock 二、Lock实现步骤: ①创建锁对象Lock lock new ReentrantLock(); ②加锁lock.lock(); ③释放锁lock.unlock(); import java.util.concurrent.locks.Lock; import java.util…

我有才打造专属个人或企业知识付费平台,核心功能设计

在当今信息爆炸的时代,知识管理已经成为了每个人必须面对的问题。然而,市面上的知识付费平台大多数都是通用的,无法满足个性化需求。 因此,我有才提供了一款专属定制的适合个人的知识付费平台。核心产品能力如下: 一…

AGM离线下载器使用说明

AGM专用离线下载器示意图: 供电方式: 通过 USB 接口给下载器供电,跳线 JP 断开。如果客户 PCB 的 JTAG 口不能提供 3.3V 电源,或仅需烧写下载器,尚未连接用户 PCB 时,采用此种方式供电。 或者&#xff1a…

入职字节外包一个月,我离职了。。。

有一种打工人的羡慕,叫做“大厂”。 真是年少不知大厂香,错把青春插稻秧。 但是,在深圳有一群比大厂员工更庞大的群体,他们顶着大厂的“名”,做着大厂的工作,还可以享受大厂的伙食,却没有大厂…

PET(Point-Query Quadtree for Crowd Counting, Localization, and More)

PET(Point-Query Quadtree for Crowd Counting, Localization, and More) 介绍实验记录训练阶段推断阶段 介绍 论文:Point-Query Quadtree for Crowd Counting, Localization, and More 实验记录 训练阶段 TODO 推断阶段 下面是以一张输…