惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
ThreatConnect
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
H
Help Net Security
T
Threat Research - Cisco Blogs
Blog — PlanetScale
Blog — PlanetScale
A
Arctic Wolf
G
Google Developers Blog
量子位
U
Unit 42
I
InfoQ
V
V2EX
F
Fox-IT International blog
P
Privacy & Cybersecurity Law Blog
V
Visual Studio Blog
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
C
CERT Recently Published Vulnerability Notes
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
T
Tailwind CSS Blog
SecWiki News
SecWiki News
Know Your Adversary
Know Your Adversary
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
The Hacker News
The Hacker News
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
Recent Commits to openclaw:main
Recent Commits to openclaw:main
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
C
Cisco Blogs
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
Recorded Future
Recorded Future
T
Tenable Blog
W
WeLiveSecurity
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
T
The Blog of Author Tim Ferriss
www.infosecurity-magazine.com
www.infosecurity-magazine.com
D
Docker
C
Cybersecurity and Infrastructure Security Agency CISA
PCI Perspectives
PCI Perspectives

文章列表

我是如何解决将 c++ 编译成可以在 node.js 中使用的 *.node,中间出现的一大堆问题的(指纹浏览器基石篇) eSIM Plus 爱沙尼亚手机号彻底翻车?“永久有效”悄然变成了一年! 接码平台 SMS-Activate 余额可以转移到新平台使用,截止日期:2026年1月29日 是时候将 hugo-theme-kiwi 主题提交到 themes.gohugo.io 站点上了 Flux2 刚开源就凉了?Z-Image 本地部署狠狠打了个样 声音的未来:Chatterbox —— 用「夸张度旋钮」提升表现力的开源 TTS 向导 还以为那只是换个背景?Qwen-Image-Edit 在 ComfyUI 中能做到更离谱的事 Windows 结合最新版 ComfyUI 部署阿里最新开源的 Qwen-Image 图像大模型 从零样本到跨场景:Seed-VC语音转换技术的革命性突破 大语音模型轻量化革命:MegaTTS3 如何重新定义文本生成语音的技术边界(windows篇) 竞赛级编程大模型OlympicCoder-7B之本地部署(Windows篇) 阿里开源了端到端全模态大模型Qwen-2.5-Omini-7B之本地部署(windows篇) 语音识别之whisper本地部署(实时语音之开篇) 甭管是个人还是企业都能部署的Mistral-Small3.1,远超同级别的模型 文生音乐开源项目DiffRhythm,8G显存本地部署之Windows篇 阿里QwQ-32B本地部署指南:用Ollama轻松运行320亿参数大模型 基于Qwen2.5大模型的Spark-TTS,零样本语音克隆,CPU可运行之本地部署(Windows篇) 智谱开源了文生图CogView4-6B模型,支持中文提示词之本地部署(Windows篇) 基于歌词生成整首歌的开源AI音乐模型,支持中、英、日、韩等多种语言,本地化部署YuE(windows篇) 阿里云开源的文生视频万相 Wan2.1之本地部署Wan2.1-T2V-1.3B模型 互动式开源AI图像编辑神器,Windows11本地部署 MagicQuill 本地部署Qwen2.5-VL-7B-Instruct多模态视觉大模型(Windows篇) 保持角色一致性的绘本生成AI开源项目之Story-Adapter本地部署Windows篇 本地部署 Stable Diffusion 3.5(最新 ComfyUI记录篇) 谁说Win7安装不了Node.js最新版的呢?都2025年,还不更新系统到Win11 vs code远程调试Linux服务器上的php代码 浏览器定制 | Windows11 编译 Chromium 133.0.6885.0(截稿前Chromium最新版之编译篇[一]) 不说是彻底搞懂,至少让你不再惧怕c/c++指针,以及各种奇葩指针变种 解决windows下php8.x及以上版本,在Apache2.4中无法加载CURL扩展的问题 在 Windows8.1 下编译 Chromium (103.0.5060.68 之三) 安装 depot_tools 和 Windows 10 SDK 为在Windows下构建基于 chromium 的浏览器(103.0.5060.68 之二) Windows构建基于 Chromium 的浏览器之环境准备篇安装 Visual Studio(103.0.5060.68 之一) 为什么网站加载速度总是那么不尽如人意呢?(网站优化篇) 海外云服务器安装 Redis 6.2.x (Ubuntu 18.04 记录篇三) 海外云服务器安装 MariaDB 10.6.X (Ubuntu 18.04 记录篇二) 海外云服务器安装 JDK8 (Ubuntu 18.04 记录篇) 虚拟机 Linux 安装 JDK(Vagrant 之二 CentOS7 篇) 怎样快速搭建 Linux 虚拟机呢?(vagrant 篇) 个人站点迁移之gitlab.com pages 绑定自定义域名 不要你掏腰包,就能搭建个人网站之 gitlab.com Pages 托管服务 国内 gitee.com Pages 下线了,致使众多站长纷纷改用其他托管平台 canvas绘制文本时,该如何处理首行缩进、自动换行、多内容以省略号结束、竖排的呢? 其实,低成本甚至免费的,也是可以搭建个人网站的哦! 腾讯云COS托管静态网站,以及如何解决访问出现了下载网页的情况 错误分析 (Machine Learning 研习十九) 多类别分类器(Machine Learning 研习十八) 使用CSS计数器,在目录名称前加上了序号,让目录看起来更加井然有序 使用 golang 以及 Gin 框架,将上传的图片在不保存至本地的情况下添加水印,并上传至阿里云 OSS 绘制特征曲线-ROC(Machine Learning 研习十七) 网站引入 Prism,使得代码高亮显示,并一键复制代码块 精确率(召回率)的权衡(Machine Learning 研习十六) 对模型性能进行评估(Machine Learning 研习十五) 图像识别之入门案例之数字识别(Machine Learning 研习十四) 微调模型——续(Machine Learning 研习之十三) 微调模型(Machine Learning 研习之十二) 解决 github.com port 443: Timed out 的问题 选择和训练模型(Machine Learning 研习之十一) 回望这风雨飘摇的一年过后,我们终将要整束行囊继续前行 一套由 Hugo 驱动的博客主题 hugo-theme-kiwi 开源啦 机器学习中的 Transformation Pipelines(Machine Learning 研习之十) 特征缩放和转换以及自定义Transformers(Machine Learning 研习之九) 为机器学习算法准备数据(Machine Learning 研习之八) 端到端的机器学习项目之探索数据(Machine Learning 研习之七) 端到端的机器学习项目(Machine Learning 研习之六) 机机器学习的测试和验证(Machine Learning 研习之五) 对于大量数据集的解决方案便是在线学习或是增量学习(Machine Learning 研习之三) 现实生活中机器学习的具体示例(Machine Learning 研习之二) 让机器学习不再是过门不入,带您一起详解机器学习(机器学习 Machine Learning 研习之一) 把握住golang中的template,方能驾驭得了Hugo主题的template 云服务器到期,站点迁移,Nginx配置SSL以备后续只需! 玩以太坊链上项目的必备技能(内联汇编 [inline assembly]-Solidity之旅十八) 玩以太坊链上项目的必备技能(库 [library]-Solidity之旅十七) 玩以太坊链上项目的必备技能(Constant 和 Immutable 状态变量-Solidity之旅十六) 玩以太坊链上项目的必备技能(修改器 [modifier]-Solidity之旅十五) 玩以太坊链上项目的必备技能(错误处理以及异常-Solidity之旅十四) 玩以太坊链上项目的必备技能(函数及其可见性和状态可变性-Solidity之旅十三) 玩以太坊链上项目的必备技能(事件-Solidity之旅十二) 玩以太坊链上项目的必备技能(OOP-接口-Solidity之旅十一) 玩以太坊链上项目的必备技能(OOP-抽象合约-Solidity之旅十) 玩以太坊链上项目的必备技能(OOP-合约继承-Solidity之旅九) 玩以太坊链上项目的必备技能(流程控制-Solidity之旅八) 玩以太坊链上项目的必备技能(单位以及全局变量-Solidity之旅七) 玩以太坊链上项目的必备技能(基本类型转换以及推断-Solidity之旅六) 玩以太坊链上项目的必备技能(变量作用域-Solidity之旅五) 玩以太坊链上项目的必备技能(类型-映射类型-Solidity之旅四) 玩以太坊链上项目的必备技能(类型-引用类型-Solidity之旅三) 花了不到1块5,玩了下全网最火的ChatGPT 玩以太坊链上项目的必备技能(类型-值类型-Solidity之旅二) 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一) 在构建 Web3 前,需先知道什么是区块链,毕竟 Web3 是基于区块链 Web3 来了,让我们展开双手拥抱它吧! Go 语言中的 Moduels 管理(Let's Go 三十四) Go 语言中的包(Let's Go 三十三) Go 语言中的错误处理(Let's Go 三十二) Go 语言中的带有缓冲 Channel(Let's Go 三十一) Go 语言中的单向 Channel(Let's Go 三十) Go 语言中的 Channel(Let's Go 二十九) Go 语言中的并发编程(Let's Go 二十八) Go 语言中的空接口(Let's Go 二十七) Go 语言中的类型断言(Let's Go 二十六)
机器学习的主要挑战和任务(Machine Learning 研习之四)
2023-08-13 · via

对于一个蹒跚学步的孩子来说,要知道什么是苹果,您只需要指着一个苹果说“苹果”(可能会重复这个过程几次)。现在孩子能够识别各种颜色和形状的苹果。

简而言之,由于您的主要任务是选择一个模型并在一些数据上对其进行训练,因此可能出错的两件事是“坏模型”和“坏数据”。 让我们从不良数据的示例开始。

训练数据数量不足

对于一个蹒跚学步的孩子来说,要知道什么是苹果,您只需要指着一个苹果说“苹果”(可能会重复这个过程几次)。现在孩子能够识别各种颜色和形状的苹果。

机器学习还没有完全成熟,大多数机器学习算法都需要大量的数据才能正常工作。即使是非常简单的问题,您通常也需要数千个示例,而对于复杂的问题,如图像或语音识别,您可能需要数百万个示例(除非您可以重用现有模型的部分内容)。

数据的不合理有效性

在2001年发表的一篇著名论文中,微软研究人员MicheleBanko和EricBrill展示了非常不同的机器学习算法,包括相当简单的算法,一旦获得足够的数据(如下图所示),它们在自然语言消歧这一复杂问题上的表现几乎相同。

正如作者所说,“这些结果表明,我们可能需要重新考虑在算法开发上花费时间和金钱与在语料库开发上花费时间和金钱之间的权衡。”

Peter Norvig等人进一步推广了数据比复杂问题的算法更重要的观点年发表的一篇名为《数据的不合理有效性》的论文中指出,然而,应该注意的是,中小型数据集仍然很常见,而且获得额外的训练数据 并不总是容易或廉价的,所以不要放弃算法。

非代表性训练数据

为了很好地进行归纳,训练数据必须能够代表您想要归纳的新案例,这一点至关重要。无论你使用基于实例的学习还是基于模型的学习,都是如此。

例如,你早些时候用来培训线性模型的一组国家并不完全具有代表性;它不包含人均国内生产总值低于23500美元或高于62500美元的任何国家。下图显示了添加这些国家的数据是什么样子的。

如果根据这些数据训练一个线性模型,您将得到实线,而旧模型则由虚线表示。正如您所看到的,添加几个缺失的国家不仅会显著改变模型,而且它清楚地表明,这样一个简单的线性模型可能永远不会很好地工作。似乎非常富裕的国家并不比中等富裕的国家更幸福(事实上,他们似乎稍微不幸福!),相反,一些贫穷的国家似乎比许多富裕的国家更幸福。

通过使用不具代表性的训练集,您训练的模型不太可能做出准确的预测,特别是对于非常贫穷和非常富有的国家。

关键是要使用代表您想要泛化的案例的训练集。这通常比听起来更难:如果样本太小,就会有采样噪声(即,由于偶然而产生的非代表性数据),但如果抽样方法有缺陷,即使是非常大的样本也可能不具有代表性。这就是所谓的抽样偏差。

抽样偏差的例子

也许抽样偏差最著名的例子发生在1936年大选期间,当时兰登和罗斯福两人针锋相对:《文学文摘》进行了一次大规模的民意调查,向大约1000万人发送了邮件。它得到了240万个答案,并充满信心地预测兰登将获得57%的选票。相反,罗斯福赢得了62%的选票。缺陷在于《文学文摘》的抽样方法:

  • 首先,为了获得发送民意调查的地址,《文学文摘》使用电话–电话簿、杂志订阅者名单、俱乐部会员名单等等。所有这些名单都倾向于更富有的人,他们更有可能投票给共和党(因此是兰登)。
  • 其次,只有不到25%的受访者回答了这个问题。这再次引入了抽样偏差,潜在地排除了不太关心政治的人,不喜欢《文学文摘》的人,以及其他关键群体。这是一种特殊的抽样偏差,称为无响应偏差。

这里是另一个例子:假设你想建立一个系统来识别funk音乐视频。建立训练集的一种方法是在YouTube上搜索“放克音乐”,然后使用生成的视频。但这是假设YouTube的搜索引擎返回一组代表YouTube上所有放克音乐视频的视频。在现实中,搜索结果很可能偏向于流行艺术家(而且如果你生活在巴西你会得到很多“funkcarioca”的视频,听起来一点也不像詹姆斯布朗。另一方面,还有什么方法可以让你得到一个大的训练集?

劣质数据

显然,如果您的训练数据充满错误、异常值和噪声(例如,由于低质量的测量),这将使系统更难检测到潜在的模式,因此您的系统不太可能表现良好。花时间清理训练数据通常是非常值得的。事实是,大多数数据科学家花了很大一部分时间来做这件事。以下是一些需要清理训练数据的例子:

  • 如果某些实例明显是离群值,那么简单地丢弃它们或尝试手动修复错误可能会有所帮助。
  • 如果某些实例缺少一些特征(例如,5%的客户没有指定他们的年龄),您必须决定是要完全忽略该特性、忽略这些实例、填充缺失值(例如,使用年龄中位数),还是使用该特征训练一个模型和不使用该特征训练一个模型。

不相关功能

俗话说:垃圾进,垃圾出。你的系统只有在训练数据包含足够多的相关特征而不是太多无关特征的情况下才能够学习。机器学习项目成功的一个关键部分是提出一套很好的功能来进行训练。这个过程称为特征工程,包括以下步骤:

  • 特征选择(在现有特征中选择最有用的特征进行训练)
  • 特征提取(结合现有的特征产生更有用的特征–正如我们前面看到的,降维算法可以帮助)。
  • 通过收集新数据创建新特征。

现在我们已经看了很多坏数据的例子,让我们看几个坏算法的例子。

过度拟合训练数据

说你要去外国旅游,出租车司机宰了你。你可能会想说那个国家所有的出租车司机都是小偷。过度概括是我们人类经常做的事情,不幸的是,如果我们不小心,机器也会落入同样的陷阱。在机器学习中,这被称为过度拟合:它意味着模型在训练数据上表现良好,但它不能很好地泛化。

下图显示了一个高次多项式生活满意度模型的例子,它强烈地过拟合训练数据。即使它在训练数据上的表现比简单线性模型好得多,你真的会相信它的预测吗?

深度神经网络等复杂模型可以检测到数据中的微妙模式,但如果训练集有噪声,或者训练集太小,这会引入采样噪声,那么模型很可能会检测到噪声本身的模式(如出租车司机的例子)。显然,这些模式不会推广到新的实例。

例如,假设您向生活满意度模型提供更多属性,包括诸如国家名称之类的非信息性属性。在这种情况下,一个复杂的模型可能会检测到这样的模式:在训练数据中,所有名字中带有w的国家的生活满意度都大于7:新西兰(7.3),挪威(7.6),瑞典(7.6)。(7.3)和瑞士(7.5)你对w-satisfaction规则适用于卢旺达或津巴布韦有多大信心?显然,这种模式纯粹是偶然出现在训练数据中的,但是模型没有办法分辨- 个模式是真实的还是仅仅是数据中噪声的结果。

当模型相对于训练数据的数量和噪声太复杂时,就会发生过拟合。以下是可能的解决方案:

  • 通过选择参数较少的模型(例如,线性模型而不是高次多项式模型)、通过减少训练数据中的属性数量或通过约束模型来简化模型。

  • 收集更多的训练数据。

  • 减少训练数据中的噪声(例如,修复数据错误并删除异常值)。

约束模型以使其更简单并降低过度拟合的风险称为正则化。 例如,我们之前定义的线性模型有两个参数,θ0和θ1。 这为学习算法提供了两个自由度来使模型适应训练数据:它可以调整线的高度 (θ0) 和斜率 (θ1)。 如果我们强制 θ1 = 0,算法将只有一个自由度,并且正确拟合数据会更加困难:它所能做的就是向上或向下移动线条以尽可能接近训练实例, 所以它最终会接近平均值。 确实是一个非常简单的模型! 如果我们允许算法修改 θ1 但强制它保持较小,那么学习算法实际上将具有一到两个自由度之间的某个位置。 它将生成一个比具有两个自由度的模型更简单的模型,但比只有一个自由度的模型更复杂。 您希望在完美拟合训练数据和保持模型足够简单以确保其能够良好泛化之间找到适当的平衡。

下图图显示了三种模型。虚线表示在用圆圈表示的国家(没有用正方形表示的国家)上训练的原始模型,实线是第二个使用所有国家/地区(圆形和正方形)训练的模型,虚线是使用与第一个模型相同的数据训练的模型,但使用了正则化约束。您可以看到,正则化迫使模型具有更小的斜率:这个模型不像第一个模型那样适合训练数据(圆),但它实际上更好地推广到了在训练过程中没有看到的新示例(正方形)。

学习期间应用的正则化量可以由超参数控制。 超参数是学习算法(而不是模型)的参数。 因此,它不受学习算法本身的影响; 它必须在训练之前设置并在训练期间保持不变。 如果您设置正则化 超参数设置为一个非常大的值,您将得到一个几乎平坦的模型(斜率接近于零); 学习算法几乎肯定不会过度拟合训练数据,但找到好的解决方案的可能性较小。 调整超参数是构建机器学习系统的重要组成部分(您将在后续篇章中看到详细的示例)。

优化训练数据

正如您可能猜到的那样,欠拟合与过拟合正好相反:当您的模型过于简单,无法了解数据的底层结构时,就会出现欠拟合。例如,生活满意度的线性模型容易出现欠拟合;现实比模型更复杂,因此它的 预测必然是不准确的,即使在训练示例中也是如此。

以下是修复此问题的主要选项:

  • 选择功能更强大的型号,参数更多。
  • 为学习算法提供更好的特征(特征工程)。
  • 减少对模型的约束(例如通过减少正则化超参数)。

后退一步

现在你对机器学习已经了解很多了。然而,我们经历了这么多的概念,你可能会感到有点迷失,所以让我们退一步,看看大图片:

  • 机器学习是通过从数据中学习,使机器在某些任务上做得更好,而不是必须显式地编写规则。
  • 有许多不同类型的ML系统:监督或不监督,批处理或在线,基于实例或基于模型。
  • 在ML项目中,您在培训集中收集数据,并将培训集提供给学习算法。如果算法是基于模型的,则调整一些参数以使模型与训练集相适应(即对训练集本身进行良好的预测),然后希望它也能对新的情况做出良好的预测。如果该算法是基于实例的,它只需用心学习这些示例,并通过使用相似度度量将它们与所学习的实例进行比较,从而推广到新的实例。
  • 如果你的训练集太小,或者数据不具有代表性,有噪声,或者被不相关的特征污染(垃圾输入,垃圾输出),系统的性能将不会很好。最后,您的模型既不能太简单(否则会欠拟合),也不能太复杂(否则会过拟合)。

还有最后一个重要的主题:一旦你训练了一个模型,你不想只是“希望”它推广到新的情况。您想要评估它,并在必要时对其进行微调。让我们看看如何做到这一点。