【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异常&…

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文件,…

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商城小程序在商业流量获取中的应用研究

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

(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 上保存…

IDEA的常用设置

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

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

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

锂电池剩余寿命预测 | 基于BiLSTM-Attention的锂电池剩余寿命预测,附锂电池最新文章汇集

锂电池剩余寿命预测 | 基于BiLSTM-Attention的锂电池剩余寿命预测,附锂电池最新文章汇集 目录 锂电池剩余寿命预测 | 基于BiLSTM-Attention的锂电池剩余寿命预测,附锂电池最新文章汇集预测效果基本描述程序设计参考资料 预测效果 基本描述 锂电池剩余寿…

代码随想录算法训练营第四十天 | 股票问题

LeetCode 121.买卖股票的最佳时机&#xff1a; 文章链接 题目链接&#xff1a;121.买卖股票的最佳时机 思路 方法1&#xff1a;暴力 看到题目最直接的想法是双层遍历求最大区间差 class Solution:def maxProfit(self, prices):if len(prices) < 1:return 0result 0for…

秋叶大神中文版Stable Diffusion下载安装使用教程

Stable Diffusion是什么&#xff1f; StableDiffusion是一款开源的AI绘画软件&#xff0c;于2022年发布&#xff0c;由CompVis、StabilityAI和LAION的研究人员创建。该软件具有出色的图像生成功能&#xff0c;使用户能够从头开始绘制作品&#xff0c;也可以使用现有的图像进行…

1. 使用springboot做一个音乐播放器软件项目【前期规划】

背景&#xff1a; 现在大部分音乐软件都是要冲会员才可以无限常听的。对于喜欢听音乐的小伙伴&#xff0c;资金又比较紧张&#xff0c;是那么的不友好。作为程序员的我&#xff0c;也是喜欢听着歌&#xff0c;敲着代码。 最近就想做一个音乐播放器的软件&#xff0c;在内网中使…

景区民宿预约系统设计与实现(代码+数据库+LW)

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装景区民宿预约系统软件来发挥其高效地信息处理的作用&#…

【项目实战1】五子棋游戏

目录 C语言编程实现五子棋&#xff1a;&#xff1a; game.h game.c 1.打印菜单 2.打印棋盘 3.玩家下棋 4.判断五子连珠 5.判断输赢 6.游戏运行 game.c完整源代码展示 test.c C语言编程实现五子棋&#xff1a;&#xff1a; game.h #pragma once #include<stdio.h> …