机器学习(Machine Learning)

目录

1.定义

2.分类

3.算法流程

1.定义

1959年Artuhur Samuel提出:机器学习就是通过非显著式编程赋予计算机学习的能力。

显著式编程:机器在实现某一目标的具体过程中人工添加了约束指令,明确告诉机器怎么做。

非显著式编程:仅告诉机器要实现的目标以及定义完成任务所依据的规则、约束或奖励标准。而具体执行策略和动作序列则由机器自主探索和决策。

比如让机器走迷宫,显著式编程就是人工设计好一条路线,一步步引导机器走到出口,机器只需严格执行命令即可。非显著式编程就是告诉机器目标是走到出口,规则是可以前后左右移动,约束不能翻越墙壁,还可以额外设置奖励标准:每走一步扣除一点体力,鼓励机器快速找到出口。然后具体过程由机器自己去探索。
又比如给一堆猫和狗的图片让机器识别,显著式编程就是人类通过编写代码告诉机器猫和狗的特征,非显著式编程就是给机器一堆猫和狗的图片,让它自己学习猫和狗的区别。

1998年Tom Mitshell提出:一个计算机程序被称为可以学习,是指它能针对某个任务T(Task)和某个性能指标P(Performance)从经验E(Experience)中学习,其特点就是它在T上被P所衡量的性能,会随着经验E的增加而提高。

任务T即机器要完成的任务,经验E即机器多次尝试的行为以及行为带来的后果,性能P是衡量任务完成好坏的指标。

比如让机器去玩游戏打BOSS,T定为要击败BOSS,P定为击败BOSS后机器操控的角色的剩余血量,E定为记录机器重复挑战尝试的各种招式组合及后果。

事实上,在机器学习中,不同的算法会有不同的性能指标。比如识别猫狗的任务可以用识别率,也可以用召回率、精确率等作为性能指标。

个人理解:机器学习就是人类为了让机器尽可能减少被人为干预、机器可以实现自动化完成任务并自主改进性能,这也是学习两个字的体现。

2.分类

根据经验E将机器学习划分为监督学习和强化学习。前者的E是完全由人工采集并输入进计算机的。后者的E是由计算机与环境互动获得的。会定义一个收益函数,让计算机通过自动改变行为模式去最大化收益函数。

在前面机器学习的举例中,猫狗图片识别任务实际就属于监督学习,它的E就是一堆图片,也就是人工采集并标注的静态数据集。玩游戏打BOSS实际上就属于强化学习,它的E就是机器重复挑战尝试的各种招式组合及后果,也就是智能体与环境动态交互产生的序列数据。

对于监督学习可以通过数据标签存在与否进一步分为三类:传统监督学习(每个训练数据都有对应的标签,常见的算法有支持向量机(SVM)、人工神经网络(NN)、深度神经网络(DNN)。)、半监督学习(一部分数据有标签,一部分数据没有)、非监督学习(所有数据都没有标签,常见的算法有聚类、EM算法、主成分分析(PCA))。

标签可以理解为图片的真实值,也就是"正确答案"。这就跟做习题一样,学生做完习题之后会将自己的答案和参考答案对照。 机器学习也一样,假如是识别猫狗的任务,提供的图片的标签就有"猫"和"狗"两种标签。机器识别一张图片,判断是猫还是狗后就会跟这张图片的标签进行对照,看自己的识别是否准确。

还可以根据标签的固有属性,将监督学习分为回归(标签是连续的值)和分类(标签是离散的值)。但是两者之间的界限比较模糊,一个解决分类问题的机器学习模型稍作改动也可以解决回归问题。

3.算法流程

机器学习的算法流程可以分为四个阶段:1.数据准备 2.算法/模型选择 3.模型训练 4.模型评估调优

**数据准备:**数据收集、数据清洗、特征工程(提取特征等操作,是模型性能的关键)、数据分割(将数据集划分为训练集和验证集,并通过验证集选择最好的模型)。

**算法/模型选择:**SVM、AdaBoost、神经网络...... 考虑在什么情况下选用什么算法或者模型

模型训练:(1)初始化 (2)迭代学习:前向传播、计算损失、更新模型

**模型评估调优:**出现欠拟合:增加训练数据维度、增加迭代次数、增加模型复杂度......

出现过拟合(无法解决,只能减缓问题):正则化、增加数据集数量、降低模型复杂度、减少特征维度......

欠拟合就是模型学习的还不够好,没有掌握到本质规律。过拟合就是模型学习的过于好,把一些没有必要的细节或者噪声等也学习到了。比如识别树叶任务(假设数据集全是边缘有锯齿的不同颜色的叶子),模型在训练完可能会认为绿色的是叶子,非绿色的就不是叶子,这就是欠拟合。也有可能认为只有边缘有锯齿形状的才是叶子(因为现实生活中也有边缘不是锯齿形的叶子),这种就是过拟合。这也就是为什么过拟合问题只能缓解,因为机器没有办法去得知所学的是不是不必要的细节或者噪声,降低模型复杂度也就是让模型学习能力变差一些,减少特征维度也就是不要给模型太过细节的特征......
在实验中,经常通过训练误差和验证误差判断发生了欠拟合还是过拟合。当训练误差很高的时候,那就是欠拟合;当训练误差低,但是验证误差高的时候,那就是过拟合(就是因为模型记住了训练数据的细节和噪声,无法泛化)。

相关推荐
九.九9 小时前
ops-transformer:AI 处理器上的高性能 Transformer 算子库
人工智能·深度学习·transformer
春日见9 小时前
拉取与合并:如何让个人分支既包含你昨天的修改,也包含 develop 最新更新
大数据·人工智能·深度学习·elasticsearch·搜索引擎
恋猫de小郭9 小时前
AI 在提高你工作效率的同时,也一直在增加你的疲惫和焦虑
前端·人工智能·ai编程
deephub9 小时前
Agent Lightning:微软开源的框架无关 Agent 训练方案,LangChain/AutoGen 都能用
人工智能·microsoft·langchain·大语言模型·agent·强化学习
偷吃的耗子9 小时前
【CNN算法理解】:三、AlexNet 训练模块(附代码)
深度学习·算法·cnn
大模型RAG和Agent技术实践9 小时前
从零构建本地AI合同审查系统:架构设计与流式交互实战(完整源代码)
人工智能·交互·智能合同审核
老邋遢9 小时前
第三章-AI知识扫盲看这一篇就够了
人工智能
互联网江湖9 小时前
Seedance2.0炸场:长短视频们“修坝”十年,不如AI放水一天?
人工智能
PythonPioneer10 小时前
在AI技术迅猛发展的今天,传统职业该如何“踏浪前行”?
人工智能
冬奇Lab10 小时前
一天一个开源项目(第20篇):NanoBot - 轻量级AI Agent框架,极简高效的智能体构建工具
人工智能·开源·agent