当前位置: 首页 > news >正文

深度学习(DL)实战——基本概念介绍

公众号:自学编程村关注后,回复“书籍”,领取1000多本计算机书籍。涵盖语言语法、数据结构算法、AI相关书籍、开发相关等等各种书籍,应有尽有,你总会用到。

关注方式见主页或文章底部。想要加群可从公众号中加我wx~~~

机器学习的任务

我们要学习机器学习,首先要明白,它要解决的问题是什么。或者是做的事情是什么。

什么是机器学习呢?

就是让机器具备找一个映射的方式(也就是通常意义上的函数),并且呢,我们暂且认为它就是一个黑匣子(即先别管这个函数是怎么实现的)。那么,我们就希望机器能建立起一种映射,当我们把某些输入给它的时候,它能够映射到我们想要的东西,即产生我们想要的输出。

也就是说,我们希望机器能够完成这样的事情:我们喂给它一些输入,然后它能够产生我们想要的输出。

那么,如果说,输出的是一个数值,我们就认为其是回归(Regression)问题;如果输出是一些选择或者分类的可能,我们就认为其是分类问题(Classfication)

举个经典的例子:我们要预测明天下雨的可能性,我们将各种数据喂给了机器,让其产生明天下雨的可能性的预测,那么这样一个事情,就是回归问题;如果我们想要判断接受到的一个邮件是否是垃圾邮件,那这就是一个分类问题,在这样的分类中,往往输出的是一个多维的向量,每一个维度就代表这一种分类的可能。例如,可以用[0,1]表示男性;[1,0]表示女性。

回归和分类是机器学习中的两大类任务。但是需要知道,机器学习不仅仅就只有这两大任务。例如,还有Structured learning等等,主要是能够主动产生有结构的一些事物等(比如生成一个图像,生成一个文本等)。

同时,机器学习还分为监督学习和无监督学习(甚至还可以说有半监督学习),所谓是否有“监督”,就是输出的结果是否在我们预期的集合之内。举个简单的例子,假如说,一个机器通过给定输入数据后,它产生的结果的集合我们已知(假设集合为{},就是说,要么为1,要么为2,要么为3),那么它就是监督学习。反之,如果它产生的结果的集合我们实现并不能知道,那么它就是无监督学习。比如聚类问题(即将一组数据分成不同的群组或簇,使得同一簇内的数据点之间相似度较高,而不同簇之间的数据点相似度较低。)。

好,大概明白了机器学习的任务是什么了之后,我们就应当继续探索,这个映射关系(函数)怎么找,或者说,这个黑匣子应当怎么打开?

函数关系的建立

再明确下,这个映射建立的目的是什么:目的是我们通过给定一个输入,然后让其产生我们想要的输出,这中间,需要经历三个步骤:①确立有什么样的参数。②从数据集中确定损失函数。③优化迭代。

参数确立

举例来说,对于①,最简单的,我们可以考虑这样一个映射关系为 ,即我先把乘上一个倍率,然后在加上一个修正。这样一个线性的关系,也是我们在数学中学到的最简单的函数关系。那么,类似于这样的一个关系,就有可能是我们要找的函数关系。而这个函数关系,我们就叫做Model(即模型)。

这里的就是我们要预测的值,也就是我们预测的输出,而这里的就是我们要给的输入。当我给它输入的时候,它能够根据它建立起来的函数关系,反馈给我的值。这里的就叫做 feature(即特征)。

那和是什么东西呢?我们叫它们为未知的参数(即Unknown Parameters),特别的,我们叫,即那个和feature相乘的,为weight(即权重);我们叫为bias(即偏差,或者叫修正值)。那现在的问题是,它们应该怎么样才能被知道呢?答:就是通过我们通常所听到的 训练模型训练(train)出来的。我们通常往往会事先给定出很多的资料(即数据),这些资料中,有已知的输入x,同时,也会将作为已知给出。那么,机器在收到我们给的已知的输入和输出之后,就会按照我们既定的模型(在我们上面所给的示例中,假设它为线性关系)来去训练,从而找到最合适的和,从而用这最合适的和作为它们的值。当我们需要机器来预测的时候(即我们此时只给机器的值,也就是只有输入,让它帮我们预测输出),它就能够用最合适的和,来帮我们估计出最可能的。

通过这里,我们实际上也就可以发现,机器学习本质上就是拿已知来预测未知(或者是产生未知)的过程。我们假设采用某种模型(需要事先选定或者设计),通过事先给定其很多的数据、让它看过大量的资料,通过这样一个过程,使得我们的这个模型中的一些未知参数能很好得train出来(即找到那些最合适的参数),最后,再拿我们这训练好的模型(各种参数均已知的情况下),在只给定输入时,期望它能够很好地帮助我们预估该输入所产生的结果(或者让其产生未知)。当然了,如果我们简单地把视野局限在监督学习这一部分的话呢,我们可以暂时忽略产生未知的过程。

当然了,上面就是一个笼统的介绍,所有的概念都泛化来去理解(就是从广义上来去理解),不要死磕,因为实际上如果死磕的话,上面有一些话还是有待商榷的。我们在后面慢慢介绍。

损失函数

接下来对于②,什么叫损失函数呢?损失函数,即Loss函数,它也是一个关于未知参数的函数。例如,上面的线性关系的损失函数,我们可以记为。那么损失函数有什么样的实际意义呢?它表示的是在我这个模型中,当我的参数选取特定的值的时候,这样取值的好坏程度(说白了,就是说这样取值,是好还是不好)。

举例来说,我让我的,我让我的,当然啊,我们假设这一组值是它训练出来的值。那么,我的模型就表示为,那这个模型好不好呢?或者说,如何用Loss函数来去衡量它的好坏程度呢?假设,我在事先给的数据集里面,有一组的值是,这里的我们称为是时的label。那么,我们将带入到我们的模型中,得到。然后我们可以来对比一下我们得到的和的差距。倘若我们用来表示二者之间的差距。可以算出,的值为。那么,这个就可以认为是我们这个样本的损失。我们总的损失函数就可以表示为。那么,通常情况下,我的这个越大,就代表了,这一组参数它所拟合的效果越不好;越小,往往就表示越好。当然了,这个损失函数我们这里用的是绝对值来去计算的,我们也可以采用平方来去计算,举例来说,我们的也可以为。用绝对值计算的,我们叫做MAE(mean absolute error),用平方计算的,我们叫做MSE(mean square error)。它们俩通常有着比较微妙的差别,通常要适用哪一种,需要看具体的任务具体对待。当然,如果有的时候和都是概率的时候,我们也可以选择用cross-entropy来去计算。


http://www.mrgr.cn/news/53171.html

相关文章:

  • faster rcnn中的dataloader代码逻辑
  • vue与u3d互调
  • day-68 使二进制数组全部等于 1 的最少操作次数 I
  • vue video播放m3u8监控视频
  • eggjs sequelize egg-sequelize-auto自动从零生成一个数据表 自动创建model
  • FreeSWITCH mod_oreka 测试
  • 一个使用大模型进行分类的提示词示例
  • 戴尔电脑win11找不到D盘的解决办法
  • 访问器与Lambda函数
  • Python爬虫:自动化获取商品评论数据
  • 干部监督三色预警机制:为精细化管理及决策提供强力支撑
  • MATLAB支持的字体
  • vue3移动端可同时上传照片和视频的组件
  • 什么是GROW with SAP?
  • 如何降低采购成本?这几个采购策略给你答案
  • sql server 行转列及列转行
  • 内存卡提示需要格式化:高效数据恢复指南
  • 关于人工智能你不能不知道发展史
  • 滴水逆向三期笔记与作业——02C语言——12 指针(2)
  • 儿童鞋垫特殊哥