EBET易博真人平台机器学习为什么需要训练训练出来的模型具体又是什么?

  新闻资讯     |      2023-09-02 17:18

  在监督学习中,给定数据和模型假设空间,就可以构建出优化问题,也即如何确定参数,使得你的优化目标最优化,这也就是所谓的训练吧。

  训练之后,便可以确定这些参数,这些参数确定的假设空间中的某一假设函数便是所谓的模型~

  我们有很多的28*28像素的黑白图片,每张图片里是手写体数字,任务是训练出模型,使得它能够尽量准确的去识别其他的手写体数字。

  首先,假设我们选用49\times32\times10结构的神经网络,也即确定了我们的假设空间\Theta,\Theta的中的点为具有某种神经元连接权值的神经网络模型,训练的任务便是在这浩瀚的假设空间中,寻找那神秘未知的模型\phi,使得我们已有的图片能够很好的fit这个\phi,也即Minimize Training Error 同时在未知的图片上也有非常好的预测能力,也即Minimize Testing Error.

  确定优化目标之后,便需要采用某种寻优算法在空间中尽量找到那个点,使得模型最优,一般会采用梯度下降算法,神经网络构造出的是非凸优化,所以存在局部最优,欠拟合的情况时有发生,但是训练的模型已经具有非常强的学习能力~

  其实,训练就是不断地试错,直至最优,机器学习路漫漫其修远,题主要不断的Training噢~

  建议从感知器到多层神经网络,来了解一下神经网络及深度学习的原理、主流应用模型及范围。

  1943 年,心理学家沃伦·麦卡洛克(Warren McCulloch)和数理逻辑学家沃尔特·皮茨(Walter Pitts)提出并给出了人工神经网络的概念及人工神经元的数学模型,从而开了人类神经网络研究的先河。世界上第一个人工神经元叫作 TLU (Threshold Linear Unit,即阈值逻辑单元或线性阈值单元)。最初的模型非常简单,只有几个输入端和输出端,对权值的设置和对阈值的调整都较为简单。

  1957 年,一个开创性的人工神经网络在康奈尔航空实验室诞生了,它的名字叫作感知器(Perceptron),由弗兰克·罗森布莱特(Frank Rosenblatt)提出,这也是首次用电子线路来模仿神经元。他的想法很简单,如图 3.1 所示:将其他电子神经元的几个输入按照相应的权重加在一起,如果它们的和大于一个事先给定的值,输出就打开,让电流通向下一个神经元;如果小于这个事先给定的值,输出就关闭,没有电流流向下一个神经元。

  1960 年,斯坦福大学教授伯纳德·威德罗(Bernard Widrow)和他的第一个博士生马尔西安·泰德·霍夫(Marcian Ted Hoff)提出了自适应线性神经元(ADaptive LInear NEurons,ADLINE)。他们第一次提出了一种可以自动更新神经元系数的方法( 机器自我学习的原始起点 ):用输出误差的最小均方去自动迭代更新神经元权重系数,直至输出信号和目标值的误差达到最小。这样就实现了权重系数可以自动连续调节的神经元。自适应线性神经元最重要的贡献是第一个使用输出信号和目标值的误差自动反馈来调整权值,这也为后面神经网络发展历史上里程碑式的反向传播算法奠定了基础。

  这个单层的神经网络也被称为自适应信号处理器,被广泛应用在通信和雷达当中。霍夫后来加入英特尔,在 1971 年设计了世界上第一个微处理器 Intel 4004。威德罗教授也是笔者 20 世纪 80 年代后期在斯坦福大学的博士生导师。笔者曾经在他的指导下做过神经网络的研究工作。图 3.2 是笔者 2016 年和他讨论神经网络未来发展时的合影,笔者手中拿的那个黑盒子就是他 1960 年做出的 ADLINE 单层神经网络。这个盒子到今天还在工作,美国国家博物馆曾经想要这个盒子做展品,但威德罗教授回答说「我还要用它来教学」。

  图 3.2 笔者和自己当年斯坦福大学的博士导师,神经网络鼻祖之一威德罗教授的合影

  威德罗教授在 1962 年还提出过一个三层的神经网络(Multi-Layer Adaptive Linear Neurons,MADALINE),但没有找到一个能够用于任意多层网络的、简洁的更新权重系数的方法。由于单层网络有广泛应用而多层网络的运算速度太慢(当时的电脑运算速度是今天的 100 亿分之一),所以在 MADALINE 之后没有人去继续深入探讨多层网络。

  由于缺少对人脑工作模式的了解,神经网络的进展一度较为缓慢,而它进入快速发展期的一个触发点则是医学领域的一个发现。1981 年,诺贝尔生理学或医学奖颁发给了美国神经生物学家大卫·胡贝尔(David Hubel)、托尔斯滕·威塞尔(Torsten Wiesel)和罗杰·斯佩里(Roger Sperry)。前两位的主要贡献是发现了人类视觉系统的信息处理采用分级方式,即在人类的大脑皮质上有多个视觉功能区域,从低级至高级分别标定为 V1~V5 等区域,低级区域的输出作为高级区域的输入。人类的视觉系统从视网膜(Retina)出发,经过低级的 V1 区提取边缘特征,到 V2 区的基本形状或目标的局部,再到高层 V4 的整个目标(例如判定为一张人脸),以及到更高层进行分类判断等。也就是说高层的特征是低层特征的组合,从低层到高层的特征表达越来越抽象和概念化。至此,人们了解到大脑是一个多层深度架构,其认知过程也是连续的。

  神经网络学习的本质是大量神经元通过复杂的连接形成记忆。因为分析简单且容易用电子元件实现,一开始人工神经网络就如图 3.3 那样由一层一层组成。其实人脑的神经元连接非常复杂,没有这么一层一层的清晰和有秩序。但我们目前并没有弄清楚人脑神经元的连接方式,先从简单的假设入手是科学的一般方法。

  简单起见,咱们先考虑二元分类问题。你告诉小孩这个动物是狗,那个也是狗。但突然一只猫跑过来,你告诉他,这个不是狗。久而久之,小孩就会产生认知模式。这个学习过程,

  训练之后。这时,再跑过来一个动物时,你问小孩,这个是狗吧?他会回答,是/否。这个就叫,预测。

  一个模型EBET易博app中,有很多参数。有些参数,可以通过训练获得,比如logistic模型中的权重。但有些参数,通过训练无法获得,被称为”超参数“,比如学习率等。这需要靠经验,过着grid search的方法去寻找。

  之前的回答里,我用映射的概念描述过机器学习的模型。我认为不管是分类任务还是回归任务,其本质都是在输入数据与输出数据之间建立映射关系:

  比如说,有一批猫猫狗狗的照片,分别拥有一个正确的“Cat”或者“Dog”的标签。我希望利用这些照片,构建一个模型,当我输入新的照片时,这个“模型”可以准确的告知我,照片里的动物到底是Cat还是Dog,那么模型的建立过程如下图所示——

  但是,如果我的目标是构建一个“模型”,让它能够在图片输入后,准确的告知我,照片中动物的“品种”是什么,那么训练过程就会与之前的模型截然不同。

  首先,输入图片对应的labels要发生变化,不能简单的标上Cat or Dog了事,而是需要给每张图片一个对应品种的标签——

  需要注意的是,如果我们给出的标签中不包含“未见过品种”的话,那么当我们随意丢给模型一张没见过的照片时,它就会通过“冥思苦想”,“生拉硬拽”的给我们的新图片赋予一个Label,但是这个Label一定是在训练过程中“见过”的标签,也就是说,模型无法无中生有。

  而这个“Cat or Dog”分类模型和“猫狗品种”分类模型,虽然可能用到的都是随机森林或者支持向量机方法,但是由于输入数据和训练目标的差异,随机森林或者支持向量机中的各种参数是截然不同的。因此,我们最终通过训练获取的“Cat or Dog”model只能实现Cat和Dog的分类,而“猫狗品种”model,则可以实现“橘猫”“波斯猫”“狸花猫”“比熊犬”“金毛犬”五个品种分类。

  说到这里,或许大家已经发现,有监督训练存在一定的局限性,即无法随意“生成”内容。而最近一段时间涌现出的功能各异的大模型们,却都具备“生成”功能。

  针对这个问题,我询问了一下大模型本“模”,ChatGTP,了解一下它对于自己的认知:

  可以看出,ChatGPT对于自己的认识非常清晰,明确的了解自己首先基于巨量文本进行无监督训练,获取预训练模型,随后再进行微调,其实也就是人工标注。

  而所谓的人工标注,是一个重要的“纠错”过程。无监督训练只是给了大模型能够“接下茬”的能力,而接的下茬是否准确,则需要耗费大量的人力成本进行确认。如果没有“标注”这个重要的有监督训练过程,就有可能生成这样的松鼠鳜鱼:

  因此,了解常见大模型的训练过程,才能够更好的体验到大模型的神奇,才能够有效的使用大模型对于我们的编程工作进行提示和辅助。「知乎知学堂」联合「AGI课堂」推出的【程序员的AI大模型进阶之旅】课程,邀请了不同领域的大佬,针对各种大模型进行详细的解析,通过几堂免费的课程,就可以让初学者对于大模型有基本的了解,并且不用翻墙,轻松上手体验大模型。

  只有了解了各个大模型的预训练过程,才有可能基于这些大模型,“微调”出属于自己的“小模型”。毕竟大模型训练所需的资源和数据,不是个体小码农可以轻松获取的。但是在大模型的基础上进行“微调”,却可谓是站在了巨人的肩膀上,“训练”出的小模型,或许有着惊人的能力。

  比如前一阵霸榜知乎热搜第一名的ChatLaw模型,就是由北大的一个团队,基于LLaMA-13B以及Bert大模型,利用由93w条判决案例组成的“庞大”而“准确”的数据集,“微调”出的“小模型”。

  这个经历了再训练过程的小模型,会在预训练大模型的基础上,基于93万条专业判例,通过有目的的调整部分参数,着重加强大模型在法条解释和生成方面的能力。

  同理,研究人员基于收集得到的50w条真实医患对话,对LLaMA模型进行了微调,得到了一个名为ChatDoctor的专业AI医疗助手:

  当我们告知助手“胃疼”时,它会模仿医生的语气进行回答:“感谢您的咨询,如果疼痛位于腹部上方,那么可能是胃和十二指肠溃疡病(PUD)。如果疼痛位于右侧,由于我还未看到您的报告,请提供更多详细信息。”

  当然,从目前各个领域的微调小模型们的效果来看,还有很多不足。比如生成的法律建议可能并不十分准确,比如给出的医疗建议显得空洞而无用。

  但是,这些积极的尝试却足以回答“机器学习为什么需要训练,训练出来的模型具体又是什么?”

  因为每个人对于机器学习能够实现功能的期待不同,或许有些人希望进行股价的预测,有些人希望进行极端天气的预测,有些人希望进行农业产量的预测……为了实现这些形形、千奇百怪的需求,机器学习必须进行训练,才能承载大家对于它的期待。

  而训练出来的模型,则可能是ChatLaw,可能是ChatDoctor,可能是面向金融预测的BloombergGPT。未来根据我自己的兴趣所在,或许能够训练出符合我自己需求的ChatLuXun,ChatHydro……

  随着大模型的井喷式涌现,以及算力的逐步提升,未来大模型势必会在各个行业中彰显其无法忽视的存在感。在可预见的未来,相比于做各种大模型的使用者、消费者,主动选择去做大模型的训练者、开发者,一定可以让你在竞争中占得先机。但是想要训练出一个“百行百精”的大模型却并非易事,毕竟无论是数据的收集还是算力及能源消耗,其量级都是难以想象的。

  正因如此,也就给了我们会写几句代码的普通人很多机会,提前接触和了解大模型,无论是微调出减轻自己工作量的小模型,还是微调出解决公司特异性需求的小模型,都可能带来意想不到的收益和生产力的提升。“纸上得来终觉浅,绝知此事要躬行”,学用结合,才能事半功倍!

  鉴于题主问的问题,如果您想弄清楚,真心建议您把任何一个机器学习公开课第一周的所有视频看一遍,自然就明白了。

  如果您想要一个科普回答:训练的是模型里的参数,模型是一个从输入到输出的黑盒子,训练是为了让这个黑盒子更适应您手头的任务。