Skip to content

Latest commit

 

History

History
339 lines (228 loc) · 9.34 KB

File metadata and controls

339 lines (228 loc) · 9.34 KB
Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0428
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在: 
	- 个人网站: `https://oeasy.org` 
	- 蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
	- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
	- Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

utf-8

回忆上次内容

  • 三次使用不同的拼音文字拼写
    • 因为发音各种变化
    • 导致 拼音文字各种变化
    • 还是需要感谢我们使用的是象形文字
      • 甲骨文

图片描述

  • 目前ai时代来了
    • 底层的token 都是英文编码构成的
    • 中文在ai时代应该如何存在呢?🤔

openai

图片描述

  • 英文 并不是 单词
    • tokenization 是 两个 token

token_id

  • 这些token 拥有自己的token_id

图片描述

  • 中文如何进入 神经网络呢?

分词

  • 英文token被识别为token

图片描述

  • 从gpt-3中
    • 大部分 中文汉字
    • 在神经网络中没有节点

gpt3.5和4

  • gpt3.5 和 4中
    • 中文token 越来越靠谱

图片描述

  • 但是英文两个字
    • 形成了两个token

gpt4o之后

  • 英文两个字
    • 形成了一个token
  • 时代 两个汉字
    • 形成了一个token

图片描述

  • 可以看到 gpt对于中文 理解在不断加深

图片描述

  • token里面 有什么?

token

  • 每个 token 有自己的 词向量

图片描述

  • 中英文 的 token 被编入了 同一个神经网络模型

底层编码

  • 这一切 都是基于 utf-8编码
    • utf-8 兼容 ascii
    • 如果是 7-bit的 单字节 那就是 ascii
    • 中文汉字 在 3-byte 的位置
    • 除此之外 还有 法文、日文、德文....

图片描述

  • 英文单词 和 其他语言 放到一起比较的时候
    • 就会 发现 语言之间的 相似度

图片描述

  • 推理是基于token的

拉丁语族

  • 源于意大利
    • 相同根源

图片描述

  • 蒙日那代人用法文定义了现代工程
  • 英国人用英文定义了工业革命
  • 美国人用英文定义了信息时代

yellow

  • 单词 有的同源头
    • 现在 意思 相差不大
    • 英语 Yellow
    • 西班牙语 Amarllio

图片描述

  • 都是指 柠檬黄
    • 词向量 高度相似

图片描述

  • 黄河 的 黄
    • 可以是 黄褐色
    • 英语 感觉 不可理解

图片描述

  • Brown River

  • 而且黄色还有很多的含义
    • 买卖黄了

图片描述

新token

  • 中文汉字 和 英文字母

    • 以及 各种语言和文字
    • 统一构成 token库
  • 而且会 不断增加

    • 英文 1000-2000 tokens
    • 中文 200 tokens

图片描述

  • 其他语言会如何呢?

语言的未来

  • 未来世界语言格局 | 类别 | 第一梯队:AI基座语言 | 第二梯队:对接型语言 | 第三梯队:边缘被翻译语言 | |---|---|---|---| | 代表语言 | 中文、英文 | 日语、韩语、法语、德语、西班牙语、俄语 | 阿拉伯语、印地语、葡萄牙语、瑞典语、希腊语、所有小语种 | | 地位 | 世界两大核心母语 | 区域强国、工业/文化较强 | 文化存在、无科技话语权 | | AI底层角色 | 模型原生思考语言
    推理、计算、逻辑、知识核心 | 翻译层、界面层、本地适配 | 纯显示层、纯翻译外壳 | | 科技定义权 | 拥有:造词权、定义权、标准权 | 跟随、采纳、本地化 | 无定义权、完全被动翻译 | | Token效率 | 极高(信息密度最高) | 中等 | 低、碎片化 | | 大模型能力 | 原生理解、零损耗、深度思考 | 翻译后理解、有损耗 | 翻译两次、大量丢失精微 | | 文明独立性 | 完全独立、两套文明体系 | 半独立 | 无独立文明未来 | | 未来命运 | 长期并存、双霸权 | 保持使用、但不再是知识顶层 | 逐步工具化、仪式化 |

  • 中英文谁会胜出呢?

对比

  • 大语言模型是逐 token 预测

    • 上一个是中文 token
      • 下一个极高概率还是中文
    • 上一个是英文 token
      • 下一个极高概率还是英文
    • 两种语料在训练文本里很少混排
      • 所以模型不会乱跳
  • 大模型在「思考 / 推理」时,只能走一条路:

    • 要么纯中文
    • 要么纯英文
    • 不可能双语混着思考
  • 未来会如何发展呢?

未来

  • 中文 & 英文 · AI 时代语言进化三阶段表 | 阶段 | 时间 | 整体格局 | 英文负责的领域(模型推理用英文) | 中文负责的领域(模型推理用中文) | 模型内部状态 | |---|---|---|---|---|---| | 第一阶段 | 现在 ~ 2030 年 | 英文主导,中文追赶 | 基础科学、芯片架构、操作系统、编译原理、底层代码、国际学术 | 中文互联网、消费应用、本土场景、大数据、工程落地 | 英文是主根,中文做翻译+适配
    推理:要么英文,要么中文 | | 第二阶段 | 2030 ~ 2040 年 | 双基座正式形成 | 传统基础科学、物理/化学/生物、经典学术、底层代码标准 | 芯片制造、AI 大模型、算力系统、工程架构、新术语定义、产业标准 | 左右脑双通道
    自动选语言推理:
    理科→英文,工程/AI→中文
    | | 第三阶段 | 2040 年以后 | 长期双核心并存 | 基础科学、国际通用交流、西方知识体系 | AI 原生知识、新工业体系、东方系统思维、全球产业标准 | 两套独立推理路径
    互不干扰,互相翻译 |

  • 这些 都 基于 utf-8 编码

    • 具体是如何存储的呢?

相互转化

  • unicode形式
    • "\u4e00"
  • 把unicode编码按照utf-8编码
    • "\u4e00".encode("utf-8")
  • 先把unicode编码为utf-8,再解码回unicode
    • "\u4e00".encode("utf-8").decode("utf-8")
  • 把utf-8编码解码回unicode编码
    • b"\xe4\xb8\x80".decode("utf-8")

图片描述

  • 把utf-8编码先解码回unicode编码,再编码为utf-8

    • b"\xe4\xb8\x80".decode("utf-8").encode("utf-8")
  • 之前 掌握了 ascii 码和 ascii 字符的转化方法

    • 这次 掌握了 unicode 和 utf-8 双向转化的方法
    • 在utf-8下中文编码会节省空间吗?

空间问题

图片描述

  • 中文汉字多
  • 信息密度比英文大

图片描述

  • 尤其是长句子

图片描述

  • gb2312系列又如何了呢?

gbk的演化

  • 80年的gb2312
  • 95年的gbk
  • 05年有了gb18030

图片描述

  • 全称:国家标准 GB 18030-2005《信息技术中文编码字符集》
    • 是中华人民共和国现时最新的内码字集
    • 是 GB 18030-2000《信息技术信息交换用汉字编码字符集基本集的扩充》的修订版
  • 有多少字符了呢?

字符集

  • GB 18030 与 GB 2312-1980 和 GBK 兼容
    • 共收录汉字70244
    • 与 utf-8 相同
      • 采用多字节编码
      • 每个字可以由 1 个、2 个或 4 个字节组成
      • 编码空间庞大

图片描述

  • utf-8标准海纳百川
  • GB18030用的人很少
    • 但始终依然存在
  • GB18030有什么作用呢?😄

乱码问题

  • 有的时候还会遇到 gb18030 编码的文档
    • 用 utf-8编码方式
    • 打开 gb18030编码 的文件
    • 就会乱码
  • 这个时候可以在 vim 中使用命令
    • :edit ++enc=gb18030
  • 可以解决问题

图片描述

  • 为什么会发生乱码呢?

编码不同造成的问题

'你好'.encode("uft-8")
  • 两个汉字被编码为六字节

图片描述

  • 如果按gbk方式解码这六个字节
    • 会如何呢?

错误解码

'你好'.encode("uft-8").decode("gbk")
  • 解码方式不对
    • 导致不可理解

图片描述

  • gb18030 用的人少
    • 有用的人少的好处
    • 如果只会用utf-8解码
    • 那么gb18030本身就构成了加密系统
    • 只有懂汉语并且懂编码才能看懂
    • 不懂的话只能见到乱码
    • 想要自动翻译都不行

总结

  • 大语言模型
    • 需要编码 各种语言
    • 使用utf-8编码方式
  • "拜"字
    • unicode编码是0x62dc
    • utf-8字节形式是b"\xe6\x8b\x9c"

图片描述

  • 如果我想看看

    • b"\x62\xdc"用utf-8解码
    • 会得到哪个汉字呢?🤔
  • 我们下次再说!👋


  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。