AIGC-GPT科普(一):神经网络快速入门

转存失败重新上传取消转存失败重新上传取消

1. 引言

为什么AIGC突然火了起来?又因何而强大?

1. AGI

  • Artificial General Intelligence通用人工智能一直是AI领域的终极目标,即不再局限于一个个单独的子任务,而是直接构建出可以解决所有问题的通用模型。受限于传统方法的局限性,人们与AGI的目标相差甚远,Moss的出现可能还是遥遥无期。 转存失败重新上传取消转存失败重新上传取消

但这波2012年以来的AI浪潮中,神经网络和深度学习的提出使得AGI出现了一些曙光,这波浪潮主要有三个重要特性:

  1. 通用性:一种架构往往可以解决多个问题,同一套模型既能处理文字,也能处理图片
  2. 能力强大:神经网络和深度学习远远超出了传统方法,可以实现好的多的效果
  3. 可扩展性:大力出奇迹,模型越大性能越强(当然应用于大模型的架构也在不断进化)

2. OpenAI与GPT

OpenAI就是一家以通用人工智能为愿景而成立的公司,本身集合了顶级的科学家和工程师成立,吸引了包括Elon Musk的投资,不过开始的时候完全不以营利为目的,导致很难吸引新的投资,成员也纷纷被挖角(比如Musk自己),直到更换了新的CEO(Sam Altman),成立了以营利为目的的子公司,踢出了Musk,引入了微软的投资,微软成为了OpenAI的云服务器供应商,并发布了GPT的一系列落地应用(GitHub-Copilot,New Bing),从而走上了发展的快车道。

GPT,即Generative Pre-trained Transformer,是基于Transformer的一种生成预训练模型,使用了Transformer的解码器架构作为其网络的基础架构。而Transformer是Google提出的一种基于自注意力机制的新型神经网络架构,发布之后基本统一了自然语言处理方向。

ChatGPT是GPT-3发布之后OpenAI一系列训练和指令微调的最新成果,是基于GPT-3.5的微调,它与GPT-3的架构基本一致,但被赋予了一系列新的能力,比如遵循人类价值观、包含更多的细节等。

3.AIGC

AIGC(AI-Generated Content 人工智能生成内容)技术主要涉及两个方面:自然语言处理NLPAIGC生成算法。自然语言处理是实现人与计算机之间如何通过自然语言进行交互的手段,从Transformer发布以来迎来了又一波发展。AIGC 生成算法主流的有生成对抗网络 GAN 和扩散模型。扩散模型已经拥有了成为下一代图像生成模型的代表的潜力。它具有精度更高、可扩展性和并行性,无论是质量还是效率均有所提升,其快速发展成为 AIGC 增长的拐点性因素。

Transformer和扩散模型作为AIGC方向的当红选手,主要原因并不是本身效率更高(比如更少的参数得到更好的效果)而是带来了可扩展性和并行性,即大力出奇迹有了可以发力的方法。

OpenAI旗下的AIGC应用

  1. 代码生成 - Codex

转存失败重新上传取消转存失败重新上传取消

  1. 图像生成 - DALL·E 2

转存失败重新上传取消转存失败重新上传取消

  1. 智能对话 - ChatGPT

转存失败重新上传取消转存失败重新上传取消

本文的主要目的是从神经网络入门开始,通过介绍GPT用到的基础概念(自监督学习、强化学习、预训练)和基础网络模型(MLP、ResNet、Transformer)来讲清楚GPT的原理和ChatGPT的发展历程。

2. 神经网络快速入门

1. 从最简单的“网络”开始

暂时无法在飞书文档外展示此内容

所谓的AI,面临的情况都是从输入一个X,给出我们想要的输出Y开始,网络的参数即为k

�=��Y=kX

目标:

构建一个“网络”,输入X,输出Y=X

转存失败重新上传取消转存失败重新上传取消

然后我们开始训练网络:

  1. 构建训练数据集

    (1,1),(2,2) ... (10,10)

  2. 确定训练方法

    k从1开始,输入训练数据集,如果kX < Y,则k = k + 0.1,如果kX > Y,则k = k - 0.1

  3. 构建验证数据集

    (11,11)

那么我们经过10次计算,得到k = 1,最终验证 11 = 1 x 11,满足验证条件,网络训练成功!

使用网络时,我们任意输入X,就可以得到我们想要的Y

2. 基础概念

转存失败重新上传取消转存失败重新上传取消

1. 输入/输出

要解决一个任务,那么要首先确定这个任务的输入和输出是什么,输入可以是数字,文本,图片,视频,音频等多种多样,输出则是想要的结果,可以跟输入类型相同,也可以不同,比如输入图片,输出抠像;输入中文,输出英文。具体到AIGC,图片生成(输入文字/图片,生成图片),视频生成(输入文字/图片/视频,生成新的视频),以及大火的ChatGPT(输入文字,生成文字)。

2. 数据集

根据训练方法的不同,数据集可以只包含输入(无监督学习),也可以包含输入和输出(有监督学习),如何获取或生成合适的数据集,往往是模型训练是否成功的前提,没有足够且准确的数据集,机器学习实际是无从谈起的。

为了验证训练出的网络是否符合需要,常常会分别构建训练数据集和验证数据集。

3. 参数/模型/网络

1. 参数

任务越复杂,则需要更多的参数,比如简单的计算只需要个位数参数,涉及到图像处理,则会用到卷积神经网络,矩阵的引入会带来参数的指数级膨胀。为了面对越来越复杂的任务,网络的参数量级呈指数级膨胀,但如果只是简单的参数捧场因此就需要设计精巧复杂的网络模型来连接这些参数。

GPT-3系列模型参数数量,1750亿!

转存失败重新上传取消转存失败重新上传取消

2.  模型和网络

转存失败重新上传取消转存失败重新上传取消

模型即为把参数合理连接起来的数学表达,比如神经元的数学模型

  • a1~an为输入向量的各个分量
  • w1~wn为神经元各个突触的权重值(weight)
  • b为偏置(bias)
  • f为传递函数,通常为非线性函数。
  • t为神经元输出

数学表达为:

转存失败重新上传取消转存失败重新上传取消

多个神经元连接起来则构成了网络,即单层神经元网络,针对不同的应用场景往往会设计不同架构的网络,网络规模,连接方式都有区别。

转存失败重新上传取消转存失败重新上传取消

4. 常用术语

  • 前向传播:输入层数据开始从前向后,数据逐步传递至输出层。

    • 对应计算Y = kX
  • 反向传播:损失函数开始从后向前,梯度逐步传递至第一层。反向传播用于权重更新,使网络输出更接近标签。

    • 对应“如果kX < Y,则k = k + 0.1,如果kX > Y,则k = k - 0.1”
  • 前馈神经网络:是一种最简单的神经网络,各神经元分层排列,每个神经元只与前一层的神经元相连。 接收前一层的输出,并输出给下一层,各层间没有反馈。

  • 梯度下降法:权重沿梯度负方向更新,使函数值减小。

    • 对应k的变化
  • 学习率:控制更新步长。

    • 对应0.1
  • 激活函数:将神经网络上一层的输入,经过神经网络层的非线性变换转换后,通过激活函数,得到输出。

    • 激活函数主要是用来加入非线性因素的,因此都是非线性函数,如sigmoid函数 转存失败重新上传取消转存失败重新上传取消
  • 损失函数:度量神经网络的输出的预测值,与实际值之间的差距的一种方式。

    • 对应kX < Y,即判断输出和预测的关系
  • 目标函数:为了完成某一目标,需要构造出一个“目标函数”来,然后让该函数取极大值或极小值,从而得到机器学习算法的模型参数。

5. 训练和学习方法

1. 监督学习

监督学习是指我们给算法一个数据集,并且给定正确答案。机器通过数据来学习正确答案的计算方法。

转存失败重新上传取消转存失败重新上传取消

使用打好标签的数据集来进行训练学习,比如给了很多猫和狗的照片进行训练,遇到新的小狗照片时就能正确进行分类。

转存失败重新上传取消转存失败重新上传取消

2. 无监督学习

无监督学习中,给定的数据集没有“正确答案”,所有的数据都是未标注。无监督学习的任务是从给定的数据集中,挖掘出潜在的结构,比如可以进行聚类。

转存失败重新上传取消转存失败重新上传取消

转存失败重新上传取消转存失败重新上传取消

3. 半监督学习

半监督学习使用大量的未标记数据,以及同时使用标记数据,来进行模式识别工作。

转存失败重新上传取消转存失败重新上传取消

4. 自监督学习

自监督学习主要是利用辅助任务(pretext)从大规模的无监督数据中挖掘自身的监督信息,通过这种构造的监督信息对网络进行训练,从而可以学习到对下游任务有价值的表征。 也就是说,自监督学习不需要任何的外部标记数据,这些标签是从输入数据自身中得到的。自监督学习的模式仍然是Pretrain-Fintune的模式,即先在pretext上进行预训练,然后将学习到的参数迁移到下游任务网络中,进行微调得到最终的网络。

5. 强化学习

强化学习更接近生物学习的本质,因此有望获得更高的智能。它关注的是智能体如何在环境中采取一系列行为,从而获得最大的累积回报。通过强化学习,一个智能体应该知道在什么状态下应该采取什么行为。比如阿尔法狗学习的数据全部来自机器自身,而非人类的棋谱。

6. 训练和推理

前文讲了神经网络的训练,而当使用这些训练时,就是在需求一种可以保持学习并能将其学习成果应用于其从未见过的数据的快速应用,即推理的过程。

准确分配加权了的神经网络本质上是一个笨重的巨型数据库,此时的模型远多于它在完成某一特定任务时所需的内容。如果有人想使用这些训练,你真正所需的是一种可以保持学习并能将其学习成果应用于其从未见过的数据的快速应用,这就是推理:只需要少得多的真实世界数据,就能快速得出正确答案。

此时有两种主要的方法可以对迟钝的神经网络进行修改,以使其速度更快并改善应用在跨多个网络运行时所造成的延迟。

第一个方法着眼于神经网络中训练之后就不再激活的部件。这些部分已不再被需要,可以被“修剪”掉。第二个方法是寻找方法将神经网络的多个层融合成一个单一的计算步骤。

即将训练好的模型优化后应用于实际应用中就是推理

7. 预训练模型

以往在应用最新的神经网络时,人们常常会初始化新的模型在不同的领域中进行训练来应用。而随着网络越来越庞大,此种方式变得低效,引入了预训练模型的概念。

预训练模型(pre-training model)是先通过一批语料进行训练模型,然后在这个初步训练好的模型基础上,再继续训练或者另作他用。这样的理解基本上是对的,预训练模型的训练和使用分别对应两个阶段:预训练阶段(pre-training)和 微调(fune-tuning)阶段

预训练阶段一般会在超大规模的语料上,采用无监督(unsupervised)或者弱监督(weak-supervised)的方式训练模型,期望模型能够获得语言相关的知识,比如句法,语法知识等等。经过超大规模语料的”洗礼”,预训练模型往往会是一个Super模型,一方面体现在它具备足够多的语言知识,一方面是因为它的参数规模很大。

微调阶段是利用预训练好的模型,去定制化地训练某些任务,使得预训练模型”更懂”这个任务。例如,利用预训练好的模型继续训练文本分类任务,将会获得比较好的一个分类结果,直观地想,预训练模型已经懂得了语言的知识,在这些知识基础上去学习文本分类任务将会事半功倍。利用预训练模型去微调的一些任务(例如前述文本分类)被称为下游任务(down-stream)。

8. 计算机视觉和自然语言处理

作为深度学习发展最迅速、最具前景的两大分支,自然语言处理NLP与计算机视觉CV的发展貌似相互独立、平分秋色。实则两者间的发展是不平衡的,多年来都是CV技术推动着NLP的发展,NLP很多网络中都有CV网络的影子。特别是目前CV的许多领域的各项技术都已经迈向成熟,而在NLP领域还处在起步阶段。但NLP技术的发展,却极大影响着CV技术的革新,他们间的发展是相互协作、共同进步的。

一个很好的例子,NLP中自注意网络的提出,引领了图像处理注意力网络的研究热潮,而NLP集注意力大成结构Transformers的提出,更是为图像处理新技术注入了新血液,直接跻身目标追踪、图像分类、语义分割等多个图像处理领域的前列,也进一步促进了AIGC的发展。

你可能感兴趣的:(AIGC,gpt,神经网络)