【A I应用】1.原理入门以及应用方式

打印 上一主题 下一主题

主题 1592|帖子 1592|积分 4776

90分钟!清华博士带你一口气搞懂人工智能和神经网络_哔哩哔哩_bilibili

原理

搭建黑箱(也就是预练习的模型)

专家系统

感知机


token


  • 界说

    • 在人工智能范畴,特殊是在自然语言处理惩罚(NLP)中,token 是文本处理惩罚的基本单元。它可以是一个单词、一个标点符号、一个数字,或者是其他语言单元。例如,在句子 “I love AI.” 中,“I”“love”“AI” 以及 “.” 都是 token。

  • 分词(Tokenization)过程

    • 分词是将文本序列分割成 token 的过程。这是自然语言处理惩罚任务的一个重要预处理惩罚步骤。
    • 不同的语言有不同的分词方式。对于像英语这样以空格分隔单词的语言,分词相对简单,但也需要思量标点符号和特殊字符。例如,“I’m” 可能会被分为 “I” 和 “'m” 两个 token。而对于像中文这样没有显着空格分隔单词的语言,分词就更加复杂,需要使用专门的中文分词工具。例如,“我爱人工智能” 可以被分为 “我”“爱”“人工智能” 三个 token。

  • 在模型中的作用

    • 模型输入表示:在神经网络模型(如 Transformer 架构的模型,包罗 ChatGPT 等)中,文本通常以 token 序列的形式输入。模型会将每个 token 转换为一个向量表示,这些向量包含了 token 的语义和语法等信息。例如,在一个预练习语言模型中,会为每个 token 分配一个对应的嵌入向量(Embedding Vector),通过对大量文本的学习,这些嵌入向量可以或许捕捉 token 之间的语义关系。
    • 限制输入长度:模型通常会对输入的 token 数量有一定的限制。这是由于模型的盘算资源和架构计划决定了它可以或许有效处理惩罚的文本长度是有限的。例如,一些模型可能最多允许输入 512 个 token。假如输入的文本分割后的 token 数量超过这个限制,就需要对文本举行截断或采用其他策略(如摘要等)来适应模型的要求。
    • 盘算成本和效率:token 的数量也会影响模型的盘算成本。更多的 token 意味着模型需要处理惩罚更多的信息,盘算量会增加。同时,token 的划分方式也会影响模型的效率。假如 token 划分得不公道,可能会导致模型难以学习到有效的语义关系,从而影响模型的性能。

向量


  • 向量是一种数据范例

    • 向量是一种有序的数字列表,在数学和盘算机科学中被视为一种数据范例。它可以用来表示多种信息,例如在二维空间中,一个向量可以表示一个点的坐标;在三维空间中,可以表示为。在数据处理惩罚范畴,向量的维度可以更高,每个维度都可以携带不同的信息。

  • 神经网络对向量的良好适应性

    • 方便的数学运算底子

      • 神经网络的盘算过程大量依赖于线性代数中的运算,如矩阵乘法、加法等。向量作为矩阵的特殊形式(列向量或行向量),可以很好地融入这些运算。例如,在一个全毗连神经网络层中,输入向量与权重矩阵相乘,再加上偏置向量,得到输出向量,其盘算公式为。这种盘算方式使得神经网络可以或许高效地处理惩罚向量形式的输入,而且通过调解权重矩阵和偏置向量来学习数据中的模式。

    • 可以或许表示多种数据

      • 向量可以用于表示各种范例的数据,以适应神经网络的不同应用场景。
      • 在文本处理惩罚中,如前面提到的词向量可以表示单词的语义信息。一个文本序列可以通过将其中的单词对应的词向量组合(例如拼接或求和等操作)来形成一个句子向量,进而作为神经网络的输入,用于文本分类、机器翻译等任务。
      • 在图像识别中,图像可以被转换为向量。以简单的灰度图像为例,一幅像素的图像可以被看作是一个维的向量,每个维度代表一个像素的灰度值。这样的向量表示可以或许让神经网络对图像的特性举行学习和分类。

    • 符合神经网络的架构特点

      • 神经网络的神经元之间的毗连方式和信息传递方式也与向量的处理惩罚相契合。从输入层到隐藏层再到输出层,数据以向量的形式在各层之间活动。每一层的神经元可以看作是对输入向量举行一种非线性变更,这种变更通过神经元的激活函数来实现。例如,常见的激活函数如 Sigmoid、ReLU 等,都是对向量中的每个元素(对应神经元的输入)举行操作,使得神经网络可以或许学习到复杂的非线性关系,而向量的结构方便了这种逐元素的操作和信息传递。




  • 向量数据例子
  • 文本处理惩罚中的词向量示例

    • 在自然语言处理惩罚中,假设我们有一个简单的词汇表,包含 “苹果”“香蕉”“橘子”“喜欢”“吃” 这 5 个词。我们可以使用一种简单的 one - hot 向量表示法。以 “苹果” 为例,它的向量表示为 [1,0,0,0,0],“香蕉” 为 [0,1,0,0,0],“橘子” 为 [0,0,1,0,0],“喜欢” 为 [0,0,0,1,0],“吃” 为 [0,0,0,0,1]。
    • 更常见的是使用预练习的词向量,如 Word2Vec 或 GloVe 生成的词向量。假设 Word2Vec 生成的向量维度是 300 维,对于 “苹果” 这个词,它的向量可能是一个 300 维的实数向量,例如 [0.12, - 0.34, 0.56,…,0.78](这里只摆列了向量的前 3 个维度和最后一个维度,中心省略了很多)。这些词向量可以或许更好地捕捉词与词之间的语义关系,比如 “苹果” 和 “香蕉” 的向量在语义空间中的距离可能比 “苹果” 和 “吃” 的向量距离更近,反映出它们语义上的相似性。

模型练习原理


  • 数据预处理惩罚阶段

    • 文本清洗:首先,大量的文本数据(如册本、消息文章、学术论文、网页内容等)被网络用于练习语言生成模型。在使用这些数据之前,会举行文本清洗操作,去除噪声信息,例如 HTML 标签、特殊符号、多余的空格等。同时,也会处理惩罚一些不规范的文本格式,如大小写统一等。
    • 分词(Tokenization):这是将文本划分成一个个基本单元(token)的过程。对于像英语这样以空格分隔单词的语言,分词相对简单,但也需要思量标点符号和特殊字符的处理惩罚。例如,“I’m” 可能会被分为 “I” 和 “'m” 两个 token。而对于像中文这样没有显着空格分隔单词的语言,分词就更加复杂,需要使用专门的中文分词工具。这些 token 将作为模型的输入单元。
    • 构建词汇表(Vocabulary):在分词后,会构建一个词汇表。词汇表包含了文本数据中出现的所有不同的 token。每个 token 在词汇表中都有一个对应的索引(index),模型在处理惩罚文本时,会将 token 转换为其对应的索引,以方便举行向量表示和盘算。词汇表的大小会影响模型的性能和复杂性,太大的词汇表可能导致模型参数过多,而太小的词汇表可能无法充实表示文本的语义。

  • 模型架构阶段(以 Transformer 架构为例)

    • 输入嵌入(Input Embedding):经过分词和词汇表转换后的文本序列(以 token 索引表示)被输入到模型中。首先,通过一个嵌入层(Embedding Layer)将 token 索引转换为向量表示。这个向量空间可以或许捕捉 token 之间的语义关系,例如,语义相似的单词对应的向量在这个空间中的距离会比较近。
    • 多头注意力机制(Multi - Head Attention):这是 Transformer 架构的焦点部分。在多头注意力机制中,输入向量会被并行地经过多个注意力头(Attention Head)。每个注意力头都可以学习文本序列中不同位置之间的关系。例如,在生成一个句子时,一个注意力头可能会关注句子中的主语和谓语之间的关系,另一个注意力头可能会关注修饰语和中心词之间的关系。通过这种方式,多头注意力机制可以或许全面地捕捉文本的语义和语法结构。
    • 前馈神经网络(Feed - Forward Neural Network):在经过多头注意力机制后,输出会经过一个前馈神经网络。这个网络由两个线性变更层和一个激活函数(如 ReLU)构成,它可以或许对文本序列举行进一步的非线性变更,增强模型的表达能力,学习到更复杂的文本模式。
    • 层归一化(Layer Normalization)和残差毗连(Residual Connection):在 Transformer 架构中,每一层都包含层归一化和残差毗连。层归一化可以加速模型的练习过程,进步模型的稳定性,它通过对每一层的输入举行归一化处理惩罚,使得模型的练习更加容易。残差毗连则允许信息直接跳过一层或多层,有助于解决深度神经网络中的梯度消散题目,使得模型可以或许有效地学习到深层次的文本特性。

  • 练习阶段

    • 自监督学习(Self - Supervised Learning):语言生成模型通常采用自监督学习的方式举行练习。以常见的 “猜测下一个单词” 任务为例,模型会根据输入文本序列的前面部分来猜测背面的单词。例如,给定句子 “The cat is sitting on the”,模型要猜测出下一个单词 “mat”。在练习过程中,模型的猜测结果与真实的下一个单词举行比较,通过盘算丧失函数(如交叉熵丧失)来衡量猜测的正确性。
    • 优化器调解(Optimizer):为了使模型可以或许不断地学习和改进,会使用优化器(如 Adam、Adagrad 等)来调解模型的参数。优化器根据丧失函数的梯度来更新参数,使得模型在每次练习迭代后,猜测结果可以或许更接近真实值。这个过程会经过多个练习周期(epoch),每个周期模型都会遍历一次全部的练习数据,随着练习的举行,模型渐渐学会语言的规律和模式。

  • 生成阶段

    • 起始输入(Initial Input):当要生成文本时,需要给模型一个起始输入。这个起始输入可以是一个特定的单词、一个句子片断或者一个特殊的起始标记(如 [CLS])。例如,在回答一个题目时,起始输入可能是题目中的关键词或者一个通用的回答起始语,如 “In response to your question”。
    • 概率采样(Probabilistic Sampling):模型会根据输入生成下一个单词的概率分布。这个概率分布是基于模型在练习阶段学习到的语言知识和模式。然后,通过概率采样的方法从这个分布中选择一个单词作为下一个输出。常见的采样方法有贪心采样(Greedy Sampling)和束搜索(Beam Search)。贪心采样每次选择概率最高的单词作为下一个输出,这种方法简单但可能会导致生成的文本比较单调。束搜索则会思量多个可能的单词组合,选择概率最高的一组单词序列作为输出,可以或许生成质量更高的文本,但盘算成本也相对较高。
    • 持续生成(Continuous Generation):在选择了下一个单词后,将这个单词添加到输入序列中,作为新的输入,再次让模型生成下一个单词的概率分布,重复这个过程,直到达到预定的文本长度或者生成告终束标记(如 [SEP])。这样就可以生成一段完整的文本内容。在生成过程中,还可以对生成的单词举行筛选和调解,例如,根据上下文和语义要求,排除一些不公道的单词,或者对单词的词性、语法等举行修正,以进步生成文本的质量

AI应用

模型微调

目前要做的工作主要就是模型微调

  • 界说

    • 模型微调(Fine - Tuning)是一种在预练习模型底子上举行进一步练习的技术。它主要用于将预练习模型适应于特定的任务或范畴(建立公司内部的知识问答平台)。
    • 例如,有一个已经在大规模通用文本数据(如维基百科、消息文章等)上举行预练习的语言模型,这个模型已经学习到了基本的语言语法、语义等知识。当我们想要将这个模型用于特定的任务,如感情分析、机器翻译或回答公司内部的专业题目时,就可以使用微调。

  • 微调的过程

    • 固定部分参数:在微调开始时,通常会选择保留预练习模型的大部分架构和参数不变。这是由于预练习模型已经学到了很多通用的语言知识,这些知识对于新任务仍然是有价值的。例如,Transformer 架构中的嵌入层(Embedding Layer)和部分层的多头注意力机制(Multi - Head Attention)参数可能会被固定,这些参数包含了词汇的语义表示和基本的文本结构信息。
    • 调解特定参数:在保留部分参数的底子上,对模型的最后几层(对于神经网络模型)或部分关键参数举行调解。这些参数通常是与任务输出直接干系的部分。例如,在一个用于文本分类的微调模型中,输出层的权重会根据特定的种别标签(如感情分类中的 “正面”“负面”“中性” 标签)举行调解。
    • 使用特定任务数据练习:使用与特定任务干系的数据对模型举行重新练习。这些数据的规模可以相对预练习数据小很多。例如,对于一个公司内部题目回答的任务,练习数据就是公司内部的任务单子数据。在练习过程中,模型会根据这些特定命据中的模式和标签来优化被选定的参数,从而使模型可以或许更好地适应新任务的要求。

特定任务问答平台

一、数据准备


  • 数据网络与整理

    • 首先要确保网络到的公司内部任务单子数据完整且正确。这可能包罗任务描述、涉及的题目、采取的解决方法、干系部门或人员等信息。
    • 对数据举行清洗,去除重复记载、错误信息以及不干系的内容,比如一些无关的备注或个人隐私数据(假如有的话)。
    • 将数据按照合适的格式举行整理,例如可以整理成表格形式(假如使用 Excel 等工具存储数据),每一行代表一个任务案例,不同列对应任务的不同属性,如题目描述、解决办法等。

  • 数据标注(可选但可能有帮助)

    • 假如数据本身没有明确的分类或标注,你可以思量举行标注工作。比如根据题目的范例(技术题目、流程题目、沟通题目等)对任务单子举行标注,或者标注出解决方法所涉及的关键技术、步骤等。
    • 标注后的数据集可以让模型在练习过程中更有针对性地学习不同范例题目的特性和对应的解决策略。

二、选择合适的模型架构


  • 简单的机器学习模型

    • 假如你刚开始尝试且数据集规模不是特殊大,一些传统的机器学习模型如决策树、朴素贝叶斯等可以作为选择。
    • 决策树模型可以通过对数据中的特性举行划分来构建一棵决策树,从而根据输入的题目特性找到对应的解决分支。朴素贝叶斯则基于概率统计原理,通过盘算不同种别(题目范例或解决方法种别)的概率来举行猜测。
    • 这些模型相对简单,练习速率可能较快,但对于复杂的语义理解和关系捕捉能力相对有限。

  • 神经网络模型

    • 思量到自然语言处理惩罚的需求,神经网络模型尤其是基于 Transformer 架构的模型可能更合适。
    • 例如,你可以使用一些开源的预练习语言模型框架如 Hugging Face 的 Transformer 库,基于它来微调(fine-tune)适合你公司数据集的模型。
    • 微调的好处是可以使用预练习模型在大量通用文本上学习到的语言知识,然后联合公司内部的特定命据举行针对性练习,这样能在较短时间内获得较好的效果。

三、模型练习


  • 划分数据集

    • 将整理好的公司内部任务单子数据集划分为练习集、验证集和测试集。通常可以按照如 70%:15%:15% 的比例举行划分。
    • 练习集用于模型的练习过程,让模型学习数据中的模式和关系。验证集在练习过程中用于评估模型的性能,以便及时调解模型的参数等,防止过拟合。测试集则在练习完成后用于最终评估模型的实际效果。

  • 设置练习参数

    • 根据选择的模型架构,设置合适的练习参数。对于传统机器学习模型,可能需要设置如决策树的最大深度、朴素贝叶斯的先验概率等参数。
    • 对于神经网络模型,常见的参数包罗学习率(控制模型学习的速率)、批大小(每次到场练习的样本数量)、练习轮数(模型对整个练习集重复练习的次数)等。
    • 需要通过一些试验和调解来找到最适合你数据集的参数设置,以获得最佳的练习效果。

  • 开始练习

    • 使用划分好的练习集按照设置好的参数对所选模型举行练习。
    • 在练习过程中,要密切关注模型在验证集上的性能表现,如正确率、召回率、F1 值等指标(对于分类题目),或者均方毛病(MSE)等指标(对于回归题目)。
    • 假如发现模型在验证集上的性能开始下降,可能是出现了过拟合现象,需要及时调解练习参数或采取一些防止过拟合的措施,如增加正则化项、降低练习轮数等。

四、模型评估与优化


  • 在测试集上评估

    • 当模型练习完成后,使用测试集对模型举行最终评估。盘算干系的性能指标,如前面提到的正确率、召回率、F1 值(对于分类题目)或均方毛病(MSE)(对于回归题目)。
    • 通过这些指标来判定模型是否达到了预期的效果,假如性能指标不抱负,需要进一步分析原因并采取相应的优化措施。

  • 优化措施

    • 假如发现模型存在过拟合题目,可以尝试增加更多的练习数据(假如有的话)、采用数据增强技术(如对文本数据举行同义词替换、语句变更等)、调解模型的复杂度(如减少神经网络的层数或神经元数量)等措施来解决。
    • 假如模型存在欠拟合题目,即模型对数据的拟合程度不够,可能需要增加模型的复杂度、延长练习轮数、调解学习率等。

五、搭建平台


  • 前端开发

    • 计划一个用户友爱的前端界面,雷同于 stackoverflow 的风格。用户可以在界面上输入题目,查看题目的分类(假如有设置分类功能),以及欣赏已有的题目和答案等。
    • 可以使用常见的前端开发技术如 HTML、CSS、JavaScript 等来实现界面的计划和交互功能。

  • 后端开发

    • 将练习好的模型部署到后端服务器上,实现模型与前端界面的交互。后端需要接收前端传来的用户题目,将其传递给练习好的模型举行处理惩罚,然后将模型生成的答案返回给前端。
    • 可以使用一些后端开发语言如 Python(联合 Flask 或 Django 等框架)、Java 等以及干系的数据库(如 MySQL 等)来实现后端的功能。

  • 集成与测试

    • 将前端和后端举行集成,举行全面的测试,确保用户输入题目后能正确地得到模型生成的答案,而且界面的各项功能(如提问、欣赏、分类等)都能正常工作。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表