人工智能与机器人|机器学习

news2024/9/21 22:26:57

原文链接:
https://mp.weixin.qq.com/s/PB_n8woxdsWPtrmL8BbehA
机器学习下包含神经网络、深度学习等,他们之间的关系表示如图2-7所示。 在这里插入图片描述

图2-7 关系图

那么什么是机器学习、深度学习、他们的区别又是什么呢?

2.7.1 什么是机器学习?

机器学习是 人工智能 (AI) 和计算机科学的一个分支,专注于使用数据和算法来模仿人类的学习方式(构建“学习”方法),逐步提高其准确性,模拟或实现人类的学习行为。机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。

传统机器学习的研究方向主要包括决策树、随机森林、人工神经网络、贝叶斯学习等方面的研究。这些在2.6章节的OpenCV库介绍中有所提及。

机器学习是通过算法使系统自行学习和改进的过程。机器学习的最终目标是设计能够自动帮助系统收集数据并使用该数据来学习更多信息的算法。系统应在收集的数据中寻找模式,并使用它们为自己做出重要决策。机器学习涉及到的7大步骤,如图2-8所示。

在这里插入图片描述

图2-8 机器学习的步骤

总的来说,机器学习正在让系统像人类一样思考和行动,展示与人类相似的智能,并赋予它们大脑。在实际应用中,常见的机器学习用于:

• 将垃圾邮件与正常电子邮件分类;

• 物体和图像识别;

• 检测假新闻;

• 理解书面或口头语言;

• 服务机器人;

• 自动驾驶汽车 ;

总之,机器学习程序可以像人类一样从经验(或者准确地说是数据)中学习。当接触到新数据时,这些应用程序会自行学习、成长、改变和拓展。换句话说,机器学习可以通过迭代达到预测和实际最小差距的预测。机器学习在未来将会被更多的应用和接受。

图片

2.7.2 机器学习如何工作?

笔者认为,机器学习的工作原理主要分为决策和误差损失优化2部分。

图片

机器学习过程首先将已标记的训练数据输入到选定的算法中。算法将将会对这些已标记或未标记数据进行估计,并产生预测值,然后决策是否进行参数调整。该过程称为决策过程。

如果预测和结果不匹配,算法会被重新训练多次,直到数据科学家得到想要的结果。通过误差函数(损失函数)量化预测和真实值间的差距。这使机器学习算法能够不断地自行学习并产生最佳答案,并随着时间的推移逐渐提高准确性。如果模型可以更好地拟合训练集中的数据,则调整权重以减少真实与模型预测之间的差异。该算法将重复这个“评估和优化”过程,自主更新权重,直到达到准确度阈值。

2.7.3 机器学习有哪些不同类型?

机器学习很复杂,目前主要分为3个方法,监督学习、非监督学习、强化学习。实际中,大约 70% 的机器学习是有监督学习,而无监督学习占 10% 到 20%。其余部分由强化学习承担。

图片

2.7.3.1.监督学习

在监督学习中,我们使用已知或标记的数据作为训练数据。由于数据是已知的,因此被称为监督学习。输入数据经过机器学习算法并用于训练最后产出模型。根据已知数据训练产出模型后,可以将未知数据用于模型并获得新的响应。

特点:

有标签
有反馈
预测分类或者数值等结果
在这里插入图片描述

举例,将苹果和梨子的图片分别标记为0和1,便有标签为0的苹果和标签为1的梨子,对这样的已知图片和标签进行训练,然后使用模型预测水果,模型算法会尝试确定图片是苹果还是梨子的百分比。

以下是目前用于监督学习的算法列表:

多项式回归
随机森林
线性回归
逻辑回归
决策树
K-最近邻
朴素贝叶斯
支持向量机(SVM)
在神经网络和深度学习中也会有监督学习的应用。智能轮式自主移动机器人也会用到监督学习。

接下来了解一下无监督学习。

2.7.3.2.无监督学习
无监督学习,也称为无监督机器学习,使用机器学习算法对未标记的数据集进行分析和聚类。在无监督学习中,训练数据是未知且未标记的——这意味着没有人看过这些数据。该数据被送到机器学习算法并用于训练模型。训练后的模型尝试搜索模式并给出所需的结果。这些算法无需人工干预即可发现隐藏的模式或数据分组或者存在的规律。

例如,在中国有一句俗语,“物以类聚,人以群分,三观不合,无需强融”,“道不同不相为谋”,将一群人放在一起,无监督学习算法会发现其中因三观造成的问题,从而将人自动分为坏人和好人。

这种方法发现信息相似性和差异性的能力使其成为探索性数据分析、模糊数据提取、销售策略、客户分类以及图像和模式识别的理想选择。

它还可以通过降维方法减少模型中的特征数量。主成分分析 (PCA) 和奇异值分解 (SVD) 是这方面的两种常用方法。另外,无监督学习中使用的其他算法包括神经网络、k 均值聚类和概率聚类方法。

特点:

无标签
无反馈
总结出潜在的规律
图片

如上图2-7所示的例子中,|“鱼龙混杂”,未知图像由好坏的人组成。经过训练的模型试图将它们放在一起,但算法可能通过探索分析通过 三观后,得出不同的人群分类。

目前用于无监督学习的前 7 种算法是:

偏最小二乘
模糊的意思
奇异值分解
K-means 聚类
先验的
层次聚类
主成分分析
在神经网络和深度学习中也会有无监督学习的应用。
智能轮式自主移动机器人也会用到监督学习。

2.7.3.3.强化学习
强化机器学习是一种类似于监督学习的机器学习模型,但该算法不是使用样本数据进行训练的。该模型通过反复试验不断学习。通过奖惩机制,更多成功的结果让程序得到加强,针对给定问题制定最佳建议或政策。换句话说,与传统类型的数据分析一样,算法也是通过反复试验来发现数据,然后决定哪些行动会带来更高的回报奖励(reward)。

强化学习由三个主要组成部分组成:代理、环境和动作。代理是学习者或决策者,环境包括代理与之交互的所有内容,动作就是代理所做的。机器人就是代理。

当代理选择在给定时间内最大化预期奖励的动作时,就会发生强化学习。当代理在健全的策略框架内工作时,这是最容易实现的。

特点:

决策处理
奖惩机制
学习-行动产出

2.7.3.4小结
通过本节内容可知道,机器学习种类繁多,意味着需要有一定场景甄别能力。
机器学习的运用大大的考验我们的分析能力,因为只有对数据场景有着清晰的认识才能选择合适的机器学习方法。
三类学习各有优劣,也都能同时解决同类问题,这时需要从更多的角度考虑问题,比如成本、稳定、性能等方面。
在这里插入图片描述

笔者总结了一些机器人场景下的模型应用。
机器人防碰撞 强化学习、监督学习
机器人运行模式 识别 监督学习
机器人视觉分类 图像SVM等
机器人IMU 9轴陀螺仪 监督学习

2.7.4 如何决定使用哪种机器学习算法?
有数十种不同的算法可供选择,但没有哪种算法能够“一劳永逸”。在许多情况下,必须进行反复试验才能获得一个理想的结果。选择什么样的方法可以通过一些特点来缩小范围。

想获取什么样的结果,0或1还是具体数值或者其他?
使用的数据大小是多少,大批量或小批量?
使用什么类型的数据,维度、时间序列、图像矩阵?
希望从数据中获得什么样的特征,维度、时间序列、图像矩阵?
对数据认识足够清晰,这些“清晰的认识”将如何使用?
数据量太大,是否选择降维算法提取数据?

提示:原始数据包含大量信息——挑战在于识别重要的模式和变量。决策树、因子分析、缺失值比和随机森林等降维算法可以帮助您找到相关细节。

2.7.5 机器学习的最佳编程语言是什么?
目前根据受欢迎的程度来看,那么 Python最 “得意”了,这要归功于许多可用的库以及广泛的支持。Python 是数据分析和数据挖掘的理想选择,并支持许多算法(用于分类、聚类、回归和降维)和机器学习模型。

机器学习是一个奇妙的新科学分支,正在慢慢接管日常生活。从定向广告到癌细胞识别,机器学习无处不在。

例如当前流行的框架pytorch、tensorflow keras 都是基于python扩大根据地的。

当然,机器学习的开发语言还有c?c++,在机器人终端,除了python之外,c/c++绝对是更合适的语言,因为机器人对响应速度要求较高,而c?c++能做到这些。

2.7.6 机器学习步骤

在第2.7.1章节提到过步骤,本章节具体说明。它可以分为7个主要步骤:

2.7.6.1 收集数据
数据分为多维序列数据和图片数据、时间序列数据。

例如:

由3个震动传感器采集的数据组成3维的数据。
图片是二维矩阵数据。
声音属于时间序列数据。

收集可靠的数据至关重要,这样您的机器学习模型才能找到正确的工作模式。如果有不正确或过时的数据,将得到错误结果或预测。

例如质量好的数据是相关的,包含很少的缺失值和重复值,没有干扰性和随机性,并且可以很好地表示存在的标签类别。

数据的收集可以采用仿真环境的模式,这样可以收集干净的数据,有必要,需要根据实际环境收集数据。收集数据由于量大所以需要考虑其批量处理能力和自动话能力。

2.7.6.2 准备数据:
获得数据后首先对数据进行整理,如果是图片需要删除不清晰的图片。可以通过以下方式执行优化:

均一化。
随机化;将您拥有的所有数据放在一起并随机化。这有助于确保数据均匀分布,并且排序不会影响学习过程。
清理数据以删除不需要的数据、缺失值、行和列、重复值、数据类型转换等。
可视化数据可以方笔了解结构并了解各种变量和存在的类之间的关系。将清理后的数据分成两组——一个训练集和一个测试集。训练集是您的模型从中学习的集合。测试集用于在训练后检查模型的准确性。
例如某数据集的文件路劲为训练集(train)和验证集(val),通过via标注工具各生成一个区域标注的标签文件(后缀为json)。

lid@LAPTOP-85KPM8J9:/mnt/e/machineLearn/buildings_datasets$  tree -L 2

.

├── train

│   ├──  0000002_0003951_0000003_0000759.jpg

│   ├──  0004-0143409_p.jpg

│   ├──  0004-0143410_i.jpg

…

│   └──  via_region_data.json

└── val

    ├── P2VBr3KZuYBOF1QA-DIRrQ.jpg

    ├── P3dr3y0NZpnQsTcjIW-x9U.jpg

    ├── P4we3TZeMBwNVD2Q8KyegQ.jpg

     …

    ├── via_region_data.json

数据集存在的形式可以自定义,但最终需要通过程序读取,所以,为了更快的读取数据集,可以遵循常见的数据集结构,例如pasvoc,minisit等。

在这里插入图片描述

2.7.6.3 选择模型:
机器学习模型确定在收集的数据上运行机器学习算法后获得的输出。选择与手头任务相关的模型很重要。多年来,科学家和工程师开发了适用于语音识别、图像识别、预测、分类等不同任务的各种模型。

例如从分类还是预测的角度选择:

例如预测房价、预测速度、预测角度等具体数值时需要回归类的模型不需要分类的模型,对应的激活函数也会有不同的选择。

从数据的结构选择模型:

图像数据可以选择卷积网络、声音选择时间序列模型等。

在这里插入图片描述

2.7.6.4 训练模型:
训练是机器学习中最重要的一步。在训练中,您将准备好的数据传递给机器学习模型以查找模式并进行预测。它导致模型从数据中学习,以便它可以完成任务集。随着时间的推移,通过训练,模型在预测方面变得更好。

使用keras或者pytorch 现有的训练框架,能够省区很多编码训练模型的时间,另外训练时通过matlotlib可视化可以帮助分析训练的效果如何。

例如pytorc通过构建迭代、优化、反向传播构建训练器。


TrainSize,SensorNNData,SensorNNLabels  = PreprocessData()

    print ('Total Epoch %d,epoch TrainSize  %d' %(NumEpochs,TrainSize))

    loss_vals=  []

    for j in range(NumEpochs):#迭代器

        losses = 0

        for i in range(TrainSize): 

            input_values =  Variable(SensorNNData[i])

            labels =  Variable(SensorNNLabels[i])

            #print(input_values)

            #print(labels)

            # Forward + Backward + Optimize

            optimizer.zero_grad()#每次训练需要清除梯度

            outputs = net(input_values)#需要训练的网络

            loss = criterion(outputs, labels)

            loss.backward()#反向传播

            optimizer.step()#优化器

            losses += loss.item()#损失函数

在这里插入图片描述

2.7.6.5 评估模型:
训练模型后,您必须检查它的性能。

通过在以前看不见的数据上测试模型的性能来完成的。

这个时候测试集就起到作用了,环环相扣。

注意:不要用训练的相同数据进行测试, 无法获得准确的测量结果,因为模型已经使用了数据,并在其中找到了与以前相同的模式。

评估模型也可以通过多次训练设置不同的参数得到不同的结果来分析对比。

2.7.6.6 参数调优:
创建并评估模型后,看看是否可以通过任何方式提高其准确性。这是通过调整模型中存在的参数来完成的。参数是程序员通常决定的模型中的变量。在您的参数的特定值下,精度将是最大值。参数调整是指找到这些值。

2.7.6.7 做出预测
最后,您可以使用您的模型对看不见的数据进行准确的预测。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity中Camera.main和Camera.current的区别

在Unity中,Camera.main和Camera.current都是用来获取相机,那到底有什么区别呢? 一、异同及注意事项 1、相同点: Camera.main和Camera.current都是用于获取相机的属性。它们都是静态属性,可以通过Camera类访问。它们…

【Redis】Redis set类型实现点赞功能

文章目录 set 数据类型介绍不排序实现排序实现 set 数据类型介绍 Redis中的set类型是一组无序的字符串值。 set通过其独特的数据结构和丰富的命令提供了在存储和处理集合元素方面的一些非常有用的功能。下面列出了主要的set类型命令: SADD key member1 [member2]&a…

国产 API 工具天花板,用来搞项目真的不错

一、API爆炸的时代 随着最近行业的移动化、物联网化、数字化转型、微服务等多种概念的提出,对应的 API 数量已经呈现出爆炸式增长,由此带来的问题就是前后端的接口对接问题越来越来突出,我们能很难找到一个合适的技术工具提高我们的效率。由此…

irq_domain msi_domain 的 使用和关系

文章目录 如何创建一个 irq_domain如何创建一个 msi_domainirq domain 和 msi domain 的关系MSI对IRQdomain打的补丁变量结构体API初始化时的API申请IRQ时的API 实例 GICV3-ITS & GICV3-ITS-PCI 相关结构体变量所在文件 如何创建一个 irq_domain 内核文档说,我们可以调用如…

基于 FPGA 的彩色图像灰度化的设计实现

文章目录 前言一、系统整体设计二、各模块的功能三、彩色图像灰度化处理模块的设计1.基本原理2.彩色图像灰度化处理方法介绍方法 1:分量法方法 2:最大值法方法 3:平均值法平均值法的实现方法 4 加权平均法加权平均法的实现rgb2gray 模块rgb2g…

LeetCode965. 单值二叉树,100. 相同的树

965. 单值二叉树,100. 相同的树 965描述示例解题思路以及代码 100描述示例解题思路以及代码 965 描述 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则返回 fals…

获得GitHub Copilot并结合VS Code使用

一、什么是GitHub Copilot GitHub Copilot是一种基于AI的代码生成工具。它使用OpenAI的GPT(生成式预训练Transformer)技术来提供建议。它可以根据您正在编写的代码上下文建议代码片段甚至整个函数。 要使用GitHub Copilot,您需要在编辑器中…

(四)Photon Voice2 的使用

一、入门 1.Voice简介 Photon Voice 2 是一个 SDK,可以轻松地向 Unity 应用程序添加高质量的低延迟语音聊天。它建立在 Photon Realtime 之上,并继承了它的所有功能,包括配对和兴趣小组。客户端加入房间并创建传出流(本地语音&a…

双目、结构光、tof,三种深度相机的原理区别看这一篇就够了!

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…

win10屏幕录像哪个好用?这2款录屏软件值得推荐!

案例:win10电脑如何录屏? 【我使用的电脑是win10系统,我想对它进行屏幕录制。有没有小伙伴知道win10电脑如何录屏?win10录屏软件哪款比较好用?】 在如今互联网时代,屏幕录像是一项非常实用的功能&#xf…

【大数据之Hadoop】三十二、MapReduce生产经验

1 MapReduce跑的慢的原因 MapReduce程序效率的瓶颈在于两点: 1)计算机性能:CPU、内存、磁盘、网络 2)I/O操作优化 (1)数据倾斜 (2)Map运行时间太长,导致Reduce等待过久 …

高斯-约旦消元法

1,思想 该算法基于高斯消元,但是思想是把矩阵化为对角阵,从而避免回代的操作思路是一列一列处理,每次选为处理过的行中主元最大(极大避免精度损失)的行处理。把这一列除了主元这一行的元素,其余该列的其他…

c#笔记-委托

委托 委托是方法的类型。 有了类型就可以声明方法的变量,参数,字段。然后再调用他。 很多新人很困惑,为什么要把方法做成变量,不直接去调用它呢? 这是因为在目前你的认知里,代码都是你一个人写出来的。 如…

计算机图形学-GAMES101-5

一、观测变换 通过Viewing(观测)transformation,最终我们将世界坐标系中的物体投影到了一个xyz都处于【-1,1】的立方体中。那么接下来,我们该做什么? 二、光栅化(Rasterization) (1)透视投影的定义 定义透视投影的视…

〖大学生·技术人必学的职业规划白宝书 - 职业规划篇①〗- 大学生选择职业前的自我认知与剖析

历时18个月,采访 850 得到的需求。 不管你是在校大学生、研究生、还是在职的小伙伴,该专栏有你想要的职业规划、简历、面试的答案。说明:该文属于 大学生技术人职业规划白宝书 专栏,购买任意白宝书体系化专栏可加入TFS-CLUB 私域社…

linux之线程同步

1. 互斥锁 定义锁: pthread_mutex_t 初始化锁函数: int pthread_mutex_init(pthread_mutex_t* mutex,pthread_mutexattr_t* attr); 第一个参数是定义的互斥锁的地址,第二个参数是锁的属性,一般传NULL 互斥锁的属性在创建…

(C语言版)力扣(LeetCode)+牛客网(nowcoder)二叉树基础oj练习

二叉树基础oj练习 965. 单值二叉树题目解法 100. 相同的树题目解法 101. 对称二叉树题目解法 144. 二叉树的前序遍历题目解法 94. 二叉树的中序遍历题目解法 145. 二叉树的后序遍历题目解法 572. 另一棵树的子树题目解法 KY11 二叉树遍历题目解法 结语 965. 单值二叉树 题目 …

Linux安装MongoDB数据库并内网穿透在外远程访问

文章目录 前言1.配置Mongodb源2.安装MongoDB数据库3.局域网连接测试4.安装cpolar内网穿透5.配置公网访问地址6.公网远程连接7.固定连接公网地址8.使用固定公网地址连接 转发自CSDN cpolarlisa的文章:Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接「内网穿透…

LeetCode572. 另一棵树的子树LeetCode

572. 另一棵树的子树 描述示例解题思路以及代码 描述 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节…

数据库|SQL调优案例之TiFlash帮倒忙该怎么办?

一、背景 早上收到某系统的告警tidb节点挂掉无法访问,情况十万火急。登录中控机查了一下display信息,4个TiDB、Prometheus、Grafana全挂了,某台机器hang死无法连接,经过快速重启后集群恢复,经排查后是昨天上线的某个S…