首页 > 其他分享 >Chapter2 监督学习

Chapter2 监督学习

时间:2024-08-31 14:21:59浏览次数:14  
标签:输出 函数 训练 模型 损失 Chapter2 学习 监督 参数

参考学习书目:Understanding Deeplearning

记录一下学习该书的过程。

监督学习:监督学习模型是将一个或多个出入转化为一个或多个输出的方式。

这个模型可以理解为一个数学公式,把输入放在公式里进行计算,得到的结果就是推理,而公式中包含一些参数,改变参数会改变计算的结果。

而我们在训练或者学习模型的过程中,其实是寻找真实反应输入和输出关系的参数,即收集输入/输出对,调整参数,使输入数据尽可能准确预测其相应输出。

2.1 监督学习介绍

在监督学习中,我们希望建立一个模型,接收输入x并给出预测结果y,即y=f(x),但模型理解为包含参数的数学方程,所以准确而言我们的模型表示为y=f[x,k],我们常说的学习或训练模型其实表示我们试图寻找能根据输入合理预测输出的参数k。

比如我们通过一组m对输入和输出样本(x_i,y_i)(0\leqslant i\leqslant m)的训练数据集学习参数k,那么参数学习的好坏(即映射的准确程度)通过损失函数Loss function来衡量。损失函数是一个标量值,概括模型基于当前参数k预测训练数据的输出与实际输出的不匹配程度。

对于损失函数的定义可以理解为L(k),我们是需要寻找一组参数k,使得损失函数值最小:

\hat{k}=arg\ \underset{k}{min} L[k]

如果在最小化的过程之后,损失很小,则说明我们找到了合适的模型参数。

训练模型之后则需要评估性能,这时再找一组独立的测试数据上运行模型,以评估训练过程中未见到过的例子的泛化能力,如果这时模型的性能也能达到预期效果,则可以开始部署模型了。

2.2 线性回归示例

首先用大家耳熟能详的实例具像化概念。

有一个模型y=f[x,k],能根据某个输出x预测单一输出y,接着我们构建一个损失函数并讨论该模型的训练。

对于一维线性模型,

 y=f[x,k]=k_0+k_{1}x

有两个参数k=(k_0,k_1)^T, k_0,k_1分别表示直线的截距和斜率,不同的截距斜率可以得到不同的输入输出映射关系。

对于该模型,我们假设有三组参数得到的三条线,我们需要有一种系统的方法来判断哪一组参数k比其他参数更优。这时,我们给每一组参数赋予一个数值,这个数值就是表示模型和数据的不匹配程度,即损失损失越低,模型拟合越好。

这种不匹配是通过预测值f[x_i,k]和真实值y_i之间的差异,通过所有的训练集数据对中差异的平方和来量化总不匹配、训练误差和损失:

L(k)=\sum_{i=1}^{I}(f(x_i,k)-y_i)^2=\sum_{i=1}^{I}(k_0+k_1x-y_i)^2

最佳参数是使得该表达式最小化的参数,称为最小二乘损失

我们知道损失L是参数k的函数,模型拟合越好,损失越小,Lk也被称为损失函数或成本函数,我们的目标则是找到最小化这个量的参数\hat{k}:

\hat{k}=arg\ \underset{k}{min} L[k] \\ = arg\ \underset{k}{min}[\sum_{i=1}^{I}(f(x_i,k)-y_i)^2] \\ =arg\ \underset{k}{min} [\sum_{i=1}^{I}(k_0+k_1x-y_i)^2]

由于模型只有两个参数,对每一组参数值的组合计算损失,“最佳”参数位于表面的最低点。

在训练过程的部分,我们首先随机选择初始参数,然后通过不断“下降”损失函数,直到找出最低点。

做法:测算当前损失函数表面的梯度,然后朝着最陡峭的下坡方向迈出一步,不断重复直到梯度变平,无法再进一步优化。

对于测试阶段,如果简单的模型可能无法完全捕捉输入和输出之间的真实关系,这就是欠拟合;相反,如果表达能力过强的模型可能会描述训练数据中一些不典型的统计特性,导致不正常的预测结果,这便是过拟合

2.3 总结

监督学习模型是一个函数y=f[x,k],由参数k能反应输入x和输出y的映射关系。为了训练模型,我们在训练数据集上(x_i,y_i)定义损失函数L[k],量化预测值f[x_ i,k]与实际输出值y_i的不匹配程度,然后寻找能最小化这个损失的参数。通过在新的测试集数据上评估模型来检查新输入的泛化能力。

标签:输出,函数,训练,模型,损失,Chapter2,学习,监督,参数
From: https://blog.csdn.net/weixin_46496912/article/details/141721567

相关文章

  • 【Python技术学习】- python基础语法
    编码默认情况下,Python3源码文件以 UTF-8 编码,所有字符串都是unicode字符串。当然你也可以为源码文件指定不同的编码:#-*-coding:cp-1252-*-上述定义允许在源文件中使用Windows-1252字符集中的字符编码,对应适合语言为保加利亚语、白罗斯语、马其顿语、俄语、塞......
  • 海康二次开发学习笔记9-通讯触发及模块列表获取
    通讯触发及模块列表获取模块列表获取获取流程中所有模块的模块名,添加下拉框用于显示模块名1.处理Combox2的DropDown事件///<summary>///模块列表获取///</summary>///<paramname="sender"></param>///<paramname=......
  • 泰坦尼克号 - 从灾难中学习机器学习/Titanic - Machine Learning from Disaster(kaggle
    此次目的:hello大家好,俺是没事爱瞎捣鼓又分享欲爆棚的叶同学!!!准备出几期博客来记录我学习kaggle数据科学入门竞赛的过程,顺便也将其中所学习到的知识分享出来。(所学主要的内容来自与b站大学恩师“编程教学-Python“的教学视频内容)哎!前几天,俺还在享受快乐生活嘞,几天就到学校了!痛......
  • Markdown学习
    ##1.哪些内容是你掌握的?哪些内容是你没有掌握的?-掌握的内容:基本语法、标题、代码块等Markdown基本用法已经掌握-未掌握的内容:列表、链接、图片、引用等Markdown基本用法学习的内容:1、画表格||学科1|学科2||----------------|-------------------......
  • Markdown学习
    一、通过学习、实践AI平台返回的内容:(1)Markdown简介和详细语法概述:Markdown是一种轻量级的标记语言,允许用户使用纯文本格式编写结构化文档。它最初由JohnGruber在2004年创建,旨在使网页编写者能够通过一些简单的语法来生成格式化的内容,最终输出为HTML。详细语法:Markdown的语......
  • 【机器学习】K近邻(K-Nearest Neighbors,简称KNN)的基本概念以及消极方法和积极方法的区
    引言K近邻(K-NearestNeighbors,简称KNN)算法是一种基础的机器学习方法,属于监督学习范畴文章目录引言一、K近邻(K-NearestNeighbors,简称KNN)1.1原理详述1.1.1距离度量1.1.2选择k值1.1.3投票机制1.2实现步骤1.3参数选择1.4应用场景1.5优缺点1.5.1优点1.5.2缺点......
  • Buildroot构建Qt根文件系统-思维导图-学习笔记-基于正点原子阿尔法开发板
    Buildroot构建Qt根文件系统获取Buildroot源码Buildroot源码下载地址,https://buildroot.org/本次下载的是长期支持版本移动至ubuntu后解压tarxfbuildroot-2022.02.3.tar.gz解压后的Buildroot源码配置Buildroot安装显示图形菜单需要的库sudoapt-getin......
  • 基于Python的机器学习系列(17):梯度提升回归(Gradient Boosting Regression)
    简介        梯度提升(GradientBoosting)是一种强大的集成学习方法,类似于AdaBoost,但与其不同的是,梯度提升通过在每一步添加新的预测器来减少前一步预测器的残差。这种方法通过逐步改进模型,能够有效提高预测准确性。梯度提升回归的工作原理        在梯度提升......
  • Datawhale X 李宏毅苹果书 AI夏令营 第五期 深度学习(进阶班)Task02 笔记分享
    文章目录Task2-1:《深度学习详解》-3.3&4&5自适应学习率(9页+38分钟)Part01:视频笔记训练技巧:自适应学习率(Adaptivelearningrate):学习率应该为每一个参数特质化:RootMeanSquare(均方根):......
  • 基于Python的机器学习系列(16):扩展 - AdaBoost
    简介        在本篇中,我们将扩展之前的AdaBoost算法实现,深入探索其细节并进行一些修改。我们将重点修复代码中的潜在问题,并对AdaBoost的实现进行一些调整,以提高其准确性和可用性。1.修复Alpha计算中的问题        在AdaBoost中,如果分类器的错误率e为0,则......