【LLM】大语言模型基础知识及主要类别架构

文章目录

  • LLM大语言模型
    • 1.LLM基础知识
      • 1.1大模型介绍:
      • 1.2语言模型
        • 1.21n-gram语言模型
        • 1.22神经网络语言模型
        • 1.23基于Transformer的预训练语言模型
        • 1.24大语言模型
      • 1.3模型评估指标
        • 1.31 BLEU
        • 1.32 Rouge指标
        • 1.33 困惑度PPL
    • 2.LLM主要类别架构
      • 2.1 自编码模型
      • 2.2 自回归模型
      • 2.3 Encoder-Decoder模型
      • 2.4 LLM主流架构

LLM大语言模型

1.LLM基础知识

1.1大模型介绍:

  • 定义
大语言模型 (英文:Large Language Model,缩写LLM) 是一种人工智能模型, 旨在理解和生成人类语言. 大语言模型可以处理多种自然语言任务,如文本分类、问答、翻译、对话等等.
通常, 大语言模型 (LLM) 是指包含数千亿 (或更多) 参数的语言模型(目前定义参数量超过10B的模型为大语言模型),这些参数是在大量文本数据上训练的,例如模型 GPT-3、ChatGPT、GLM、BLOOM和 LLaMA等.
  • 语言模型的发展历程
    • 基于transformer架构,做基础的预训练过程,典型的模型:BERT,GPT
    • 逐步扩大模型参数和训练语料规模 代表是BERT,T5,GPT-3等
    • AIGC时代,超过百亿千万亿参数的模型,模型架构为自回归架构,大模型走向对话式,生成式,多模态时代 代表是ChatGPT GPT-4等

在这里插入图片描述

1.2语言模型

  • 定义
简单理解: 判断一句话发生的概率,(也可以理解成,判断一句话是不是人话)
标准定义: 假如一个句子为s=[w1, w2,...,wn],语言模型是计算当前句子发生的概率,即:p(s)=p(w1,w2,..2n).如果当前句子符合人类日常用语表达习惯,概率值就大,否则,就小
  • 分类
    • 基于规则和统计的语言模型:N-gram
      • 参数空间过大:条件概率的可能性太多
      • 数据稀疏严重
    • 神经网络模型
    • 基于transformer的预训练语言模型
    • 大语言模型
1.21n-gram语言模型
  • 定义:

    在计算p(s)=p(w1,w2,..2n),引入马尔可夫性假设,当前词发生的概率只依赖于它前面的有限的词
    
  • unigram一元语言模型

    • 如果一个词的出现与它周围的词是独立的,那么我们就称之为unigram也就是一元语言模型.
    • 在这里插入图片描述
  • bigram语言模型

    • 当前词发生的概率只依赖于它前面的一个单词
    • 在这里插入图片描述
  • trigram语言模型

    • 当前词发生的概率只依赖于它前面的两个单词
    • 在这里插入图片描述
  • 特点:

    • 容易理解,但是泛化性能较差
1.22神经网络语言模型
  • 定义:

    基于Linear实现神经网络的搭建,由上文来预测下一个单词
    
  • 特点:

    • 相比较N-gram, 更好的泛化性能,但是对长序列的建模能力有限,可能会出现梯度消失的问题
1.23基于Transformer的预训练语言模型
  • 定义:

    基于Transfomer架构衍生出各种类型的模型,比如:bert、gpt等模型,实现由上文预测下文的任务
    
  • 特点:

    • 模型特征更加丰富,性能更好,但是计算资源需求大,可解释性差
1.24大语言模型
  • 定义:

    基于Transfomer架构衍生出各种类型的模型,比如:ChatGPT、Llama等模型,实现由上文预测下文的任务
    
  • 特点:

    • 像"人类"一样的智能,可以完成对话形式的任务

1.3模型评估指标

  • 常见指标:
    • 准确率:模型预测正确的样本数占总样本数
    • 精确率:在识别为正类别的样本中,正类别的比例
    • 召回率:在所有正类别样本中,被识别为正类别的比例
    • BLEU: 将语言翻译为另一种语言的文本质量指标,取值范围[0,1],越接近1质量越好
    • ROUGE: 模型生成的回答与参考答案进行比较计算
    • PPL: 用来衡量一个概率分布或概率模型预测样本的好坏程度,PPL越小,表明模型越好
1.31 BLEU

定义:

  评估文本翻译的质量;bleu值范围【0-1】,值越大,翻译质量越好,否则,越差
  • 基本步骤:

    • 一般基于N-gram指标来计算,所以首先分别去计算生成文本的N-Gram,再计算真实文本的N-Gram,最后统计匹配的个数
    • 基于匹配的N-gram个数/生成文本的N-Gram总个数
  • 代码实现:

    # # 第一步安装nltk的包-->pip install nltk
    import torch
    from nltk.translate.bleu_score import sentence_bleu
    import math
    def cumulative_bleu(reference, candidate):# 指标计算:p1^w1*p2^w2 =0.6^0.5*0.25^0.5 = 0.387# math.exp(0.5 * math.log(0.6) + 0.5 * math.log(0.25)) =# math.exp(0.5*math.log(0.15)) = math.exp(math.log(0.15)^0.5) = 0.15^0.5 = 0.387# # 0.3872983346207417bleu_1_gram = sentence_bleu(reference, candidate, weights=(1, 0, 0, 0))# exp ** (0.5*log(0.6)=-0.22+0.5*log(0.25)=-0.6)bleu_2_gram = sentence_bleu(reference, candidate, weights=(0.5, 0.5, 0, 0))bleu_3_gram = sentence_bleu(reference, candidate, weights=(0.33, 0.33, 0.33, 0))bleu_4_gram = sentence_bleu(reference, candidate, weights=(0.25, 0.25, 0.25, 0.25))return bleu_1_gram, bleu_2_gram, bleu_3_gram, bleu_4_gram# return bleu_1_gram, bleu_2_gram# 生成文本
    candidate_text = ["This", "is",  "some",  "generated", "text"]# 参考文本列表
    reference_texts = [["This", "is",  "a",  "reference", "text"]]# 计算 Bleu 指标
    c_bleu = cumulative_bleu(reference_texts, candidate_text)# 打印结果
    print("The Bleu score is:", c_bleu)
    
1.32 Rouge指标
  • 定义:

    均可用来衡量生成结果和标准结果的匹配程度,不同的是ROUGE基于召回率,BLEU更看重准确率。
    
  • 基本步骤:

    • Rouge-N实际上是将模型生成的结果和真实结果按N-gram拆分后,计算召回率.
  • 代码实现:

    # 第一步:安装rouge-->pip install rouge
    from rouge import Rouge# 生成文本
    generated_text = "This is some generated text."# 参考文本列表
    reference_texts = ["This is another generated reference text."]# 计算 ROUGE 指标
    rouge = Rouge()
    scores = rouge.get_scores(generated_text, reference_texts[0])
    print(f'scores-->{scores}')# 打印结果
    print("ROUGE-1 precision:", scores[0]["rouge-1"]["p"])
    print("ROUGE-1 recall:", scores[0]["rouge-1"]["r"])
    print("ROUGE-1 F1 score:", scores[0]["rouge-1"]["f"])
    # ROUGE-1 precision: 0.8
    # ROUGE-1 recall: 0.6666666666666666
    # ROUGE-1 F1 score: 0.7272727223140496
    
1.33 困惑度PPL
  • 含义:

    PPL用来度量一个概率分布或概率模型预测样本的好坏程度
    
  • 基本公式:

    在这里插入图片描述

  • 代码实现:

    import math
    # 定义语料库
    sentences = [
    ['I', 'have', 'a', 'pen'],
    ['He', 'has', 'a', 'book'],
    ['She', 'has', 'a', 'cat']
    ]
    # 定义语言模型
    unigram = {'I': 1/12, 'have': 1/12, 'a': 3/12, 'pen': 1/12,'He': 1/12, 'has': 2/12,'book': 1/12,'She': 1/12, 'cat': 1/12}perplexity = 0
    for sentence in sentences:sentence_prob = 1for word in sentence:sentence_prob *= unigram[word]temp = -math.log(sentence_prob, 2)/len(sentence)perplexity+=2**temp
    perplexity = perplexity/len(sentences)
    print('困惑度为:', perplexity)
    # 困惑度为: 8.15
    

2.LLM主要类别架构

  • Transformer架构

在这里插入图片描述

  • LLM一般分为三种类型:
    • Encoder-Only
    • Decoder-Only
    • Encoder-Decoder

2.1 自编码模型

  • 基本原理:

    对于输入的文本随机进行MASK,利用上下文来预测MASK
    
  • 代表模型:

    • BERT

2.2 自回归模型

  • 基本原理:

    一般从左到右,由上文生成下文
    
  • 代表模型:

    • GPT

2.3 Encoder-Decoder模型

  • 基本原理:

    将所有的NLP任务,转换为统一架构格式(文本生成任务):text2text
    
  • 代表模型:

    • T5

2.4 LLM主流架构

  • Decoder-Only

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/66469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

剖析 Claim-Check 模式:以小传大,赋能分布式系统与微服务

1. 前言 1.1 写作背景与目的 在当今分布式系统与微服务架构盛行的时代,服务间的消息传递与数据交换越来越频繁。传统的消息传输在面对海量数据时,往往会遇到以下痛点: 消息体过大:直接通过消息队列或服务间接口发送大体量数据&…

【Uniapp-Vue3】v-if条件渲染及v-show的选择对比

如果我们想让元素根据响应式变量的值进行显示或隐藏可以使用v-if或v-show 一、v-show 另一种控制显示的方法就是使用v-show,使用方法和v-if一样,为true显示,为false则不显示。 二、v-if v-if除了可以像v-show一样单独使用外,还…

JVM实战—OOM的定位和解决

1.如何对系统的OOM异常进行监控和报警 (1)最佳的解决方案 最佳的OOM监控方案就是:建立一套监控平台,比如搭建Zabbix、Open-Falcon之类的监控平台。如果有监控平台,就可以接入系统异常的监控和报警,可以设置当系统出现OOM异常&…

数据库中的 DDL、DML 和 DCL

数据库中的 DDL、DML 和 DCL 在数据库的定义与操作中,DDL、DML 和 DCL 是三个核心概念,分别用于不同层面的数据库管理与操作。 1. DDL(Data Definition Language) - 数据定义语言 定义 DDL 用于定义和管理数据库的结构或模式。…

【leetcode】摩尔投票算法

原题:169. 多数元素 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3…

Idea(中文版) 项目结构/基本设置/设计背景

目录 1. Idea 项目结构 1.1 新建项目 1.2 新建项目的模块 1.3 新建项目模块的包 1.4 新建项目模块包的类 2. 基本设置 2.1 设置主题 2.2 设置字体 2.3 设置注释 2.4 自动导包 2.5 忽略大小写 2.6 设置背景图片 3. 项目与模块操作 3.1 修改类名 3.2 关闭项目 1. I…

liunx 中编写 springboot 服务停止时定时检查重启脚本

当服务内存溢出或其他一些原因,导致程序停止运行,服务不可用,为了服务能够及时自动重启,记录一下操作过程! 首先编写自动重启的脚本指令,脚本在服务器上编写的,最后不要写好txt文件,…

Go语言的字符串处理

Go语言的字符串处理 在现代程序设计中,字符串是一种最常用的数据类型之一。在Go语言中,字符串处理既灵活又强大,能够帮助开发者高效地进行文本操作和数据处理。本文将深入探讨Go语言中的字符串处理,涵盖字符串的基本特性、常用操…

CV-LLM经典论文解读|VTimeLLM: Empower LLM to Grasp Video MomentsVTimeLLM:赋能大语言模型理解视频片段

论文标题 VTimeLLM: Empower LLM to Grasp Video Moments VTimeLLM:赋能大语言模型理解视频片段 论文链接: VTimeLLM: Empower LLM to Grasp Video Moments论文下载 论文作者 Bin Huang, Xin Wang, Hong Chen, Zihan Song, Wenwu Zhu (Tsinghua Un…

wujie无界微前端框架初使用

先说一下项目需求:将单独的四套系统的登录操作统一放在一个入口页面进行登录,所有系统都使用的是vue3,(不要问我为啥会这样设计,产品说的客户要求) 1.主系统下载wujie 我全套都是vue3,所以直接…

ceph文件系统

ceph文件系统:高度可扩展,分布式的存储文件系统,旨在提高性能,高可靠性和高可用的对 象存储,块存储,文件系统的存储。使用分布式的算法保证数据的高可用和一致性。 ceph的组件 1、MON:ceph m…

Django的runserver

当年执行 python manage runserver命令时 1. 先执行 runserver 中的 handle方法 2. 执行 self.run()方法 3. 执行 self.inner_run() 3.1 inner_run 下 run方法的封装 3.1.1 接着看 handle 怎么来的 封装了一个方法 接着找返回函数 3.1.2在 basehttp 下 3.1.3 get_wsgi_appl…

开源AI智能名片2+1链动模式S2B2C商城小程序在商业流量获取中的应用研究

摘要: 随着互联网技术的迅猛发展,商业流量的获取已成为企业市场竞争中的关键环节。传统意义上的“客流量”在互联网语境下被赋予了新的内涵,即“商业流量”,其本质依然指向用户。在当前线上线下融合的商业环境中,流量…

用CRD定义未来:解锁机器学习平台的无限可能

Kubernetes CustomResourceDefinition(CRD)详解 一、CRD 概述 CRD(CustomResourceDefinition,自定义资源定义)是 Kubernetes 提供的一种机制,用于用户自定义新的资源类型。CRD 扩展了 Kubernetes API&…

(leetcode算法题)76. 最小覆盖子串

以s "ADOBECODEBANC", t "ABC"为例,进行如下演示 对于上图的说明: 1. 上面八个状态是在从左往右滑动窗口时,每发现一个窗口满足以下条件就进行状态暂停 条件:s[l, r] 覆盖了 t 这个字符串 2. 只有出窗口之…

2025-01-07 Unity 使用 Tip3 —— 游戏保存数据到 Application.persistentDataPath 不生效解决方案更新

文章目录 1 问题描述2 老版解决方案(测试可行)2.1 创建 js 脚本2.2 添加 js 引用 3 新版解决方案(测试不可行)4 实际问题 ​ WebGL 平台限制了文件访问系统,在 Unity 以前版本中,开发者想要在 WebGL 上保存…

2024年终总结及计划

24年收获不少,早就想总结下,但是有的问题不想去思考,也不想去面对,就晚了几天,趁着加班总结反思下。 一、计划完成情况 1、生活 ①运动:继续坚持每周慢跑15公里,这是必须要做的。另外&#x…

健康,工作,娱乐,爱

健康,工作,娱乐,爱,这四个仪表盘要怎么平衡。 最近在看一本书:《人生设计课》,有一段讲得就是健康,工作,娱乐,爱这四个就像是汽车的仪表盘,并且有着不同的刻度…

IDEA的常用设置

目录 一、显示顶部工具栏 二、设置编辑区字体按住鼠标滚轮变大变小(看需要设置) 三、设置自动导包和优化导入的包(有的时候还是需要手动导包) 四、设置导入同一个包下的类,超过指定个数的时候,合并为*&a…

Anthropic 的人工智能 Claude 表现优于 ChatGPT

在人工智能领域,竞争一直激烈,尤其是在自然语言处理(NLP)技术的发展中,多个公司都在争夺市场的主导地位。OpenAI的ChatGPT和Anthropic的Claude是目前最具影响力的两款对话型AI产品,它们都能够理解并生成自然…