news 2026/1/20 7:10:48

人工智能之数学基础 信息论:第四章 应用延伸

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
人工智能之数学基础 信息论:第四章 应用延伸

人工智能之数学基础 信息论

第四章 应用延伸—公式关注公众号


文章目录

  • 人工智能之数学基础 信息论
  • 前言
  • 一、信道容量(Channel Capacity)
    • 1. 什么是信道?
    • 2. 信道模型:离散无记忆信道(DMC)
    • 3. 信道容量定义
    • 4. BSC 的信道容量
  • 二、数据压缩原理
    • 1. 香农第一定理(无损压缩极限)
    • 2. 霍夫曼编码(Huffman Coding)
      • 编码步骤:
    • 3. 有损压缩与率失真理论(Rate-Distortion Theory)
  • 三、AI 中的信息编码实践
  • 四、Python 代码实现
    • 1. 导入库
    • 2. 霍夫曼编码实现
    • 3. 测试霍夫曼编码:英文文本压缩
    • 4. 信道容量仿真:二元对称信道(BSC)
    • 5. AI 应用:模拟 BPE 分词的信息效率
    • 6. 率失真权衡:图像压缩模拟
    • 五、总结:信息论在 AI 时代的角色
  • 后续
  • 资料关注

前言

信息论不仅是通信工程的基石,更在人工智能、深度学习、大数据处理中扮演关键角色。从神经网络中的嵌入表示大模型的 Token 压缩,从变分自编码器(VAE)信息瓶颈理论,信息论提供了统一的数学语言。

本文系统讲解:

  • 信道容量(Channel Capacity):通信的极限速率
  • 无损数据压缩原理:香农第一定理与霍夫曼编码
  • 有损压缩与率失真理论:AI 中的表示学习
  • AI 中的信息编码实践:Tokenization、嵌入、量化
  • 配套 Python 代码实现(霍夫曼编码、信道仿真、压缩率分析)

一、信道容量(Channel Capacity)

1. 什么是信道?

信道是信息从发送端到接收端的传输媒介,可能引入噪声。
例如:无线信号(高斯噪声)、光纤(衰减)、神经网络层(信息瓶颈)。

2. 信道模型:离散无记忆信道(DMC)

  • 输入 $ X \in \mathcal{X} $,输出 $Y \in \mathcal{Y} $
  • 转移概率$ P(Y|X) $ 定义信道特性
  • 无记忆:每次传输独立

✅ 经典例子:二元对称信道(BSC)

  • 输入:0 或 1
  • 以概率 $ p $ 翻转(0→1 或 1→0)
  • 转移矩阵:
    P ( Y ∣ X ) = [ 1 − p p p 1 − p ] P(Y|X) = \begin{bmatrix} 1-p & p \\ p & 1-p \end{bmatrix}P(YX)=[1ppp1p]

3. 信道容量定义

C = max ⁡ P X I ( X ; Y ) C = \max_{P_X} I(X; Y)C=PXmaxI(X;Y)

  • 含义:在该信道上可靠通信的最大速率(单位:比特/信道使用)
  • 香农第二定理:只要传输速率$ R < C $,存在编码方案使错误概率任意小

4. BSC 的信道容量

C = 1 − H b ( p ) C = 1 - H_b(p)C=1Hb(p)

其中 $ H_b§ = -p \log_2 p - (1-p) \log_2 (1-p) $ 是二元熵函数。

📌 直观:

  • $ p = 0 $(无噪声)→ $ C = 1 $ 比特/符号
  • $ p = 0.5 $(完全随机)→ $ C = 0 $ → 无法通信

二、数据压缩原理

1. 香农第一定理(无损压缩极限)

对于独立同分布(i.i.d.)信源 $ X $,其最小平均码长满足:

H ( X ) ≤ L < H ( X ) + 1 H(X) \leq L < H(X) + 1H(X)L<H(X)+1

  • $ H(X)$:信源熵(信息量下限)
  • 结论:无法用少于 $ H(X) $ 比特/符号进行无损压缩

✅ 例:英文文本熵 ≈ 1.3 比特/字母 → 理论压缩比 ≈ 8.7:1(vs ASCII 的 8 比特)


2. 霍夫曼编码(Huffman Coding)

  • 最优前缀码:高频符号用短码,低频用长码
  • 构造方法:贪心合并最小概率节点

编码步骤:

  1. 统计符号频率
  2. 构建霍夫曼树
  3. 从根到叶分配 0/1
  4. 生成码表

💡性质:平均码长接近熵,且无损可逆


3. 有损压缩与率失真理论(Rate-Distortion Theory)

当允许一定失真 $ D $,最小所需码率 $ R(D) $ 为:

R ( D ) = min ⁡ P ( x ^ ∣ x ) : E [ d ( x , x ^ ) ] ≤ D I ( X ; X ^ ) R(D) = \min_{P(\hat{x}|x): \mathbb{E}[d(x, \hat{x})] \leq D} I(X; \hat{X})R(D)=P(x^x):E[d(x,x^)]DminI(X;X^)

  • $ d(x, \hat{x}) $:失真度量(如 MSE)
  • AI 启示:表示学习本质是在率(模型大小)与失真(重构误差)间权衡

🌟信息瓶颈理论(Tishby et al.)
DNN 训练过程 = 最小化 $ I(X; T)(压缩输入),同时最大化 (压缩输入),同时最大化(压缩输入),同时最大化I(T; Y) $(保留标签信息)


三、AI 中的信息编码实践

应用信息论原理实例
Tokenization无损压缩BPE(Byte Pair Encoding)逼近语言熵
嵌入(Embedding)率失真权衡Word2Vec / BERT 将词映射到低维连续空间
模型量化有损压缩FP32 → INT8,牺牲精度换存储/速度
变分自编码器(VAE)信息瓶颈最小化 $ I(X; Z) $ 同时保证重构
知识蒸馏信道模拟教师模型 → 学生模型,视为“语义信道”

🔥大模型中的 BPE

  • 将文本切分为 subword units(如 “un”, “happiness” → “un”, “happ”, “iness”)
  • 高频子词用短编码 →逼近语言的香农熵

四、Python 代码实现

1. 导入库

importheapqfromcollectionsimportdefaultdict,Counterimportnumpyasnpimportmatplotlib.pyplotaspltimportstring plt.rcParams['font.sans-serif']=['SimHei']

2. 霍夫曼编码实现

classHuffmanNode:def__init__(self,char=None,freq=0,left=None,right=None):self.char=char self.freq=freq self.left=left self.right=rightdef__lt__(self,other):returnself.freq<other.freqdefbuild_huffman_tree(freq_dict):"""构建霍夫曼树"""heap=[HuffmanNode(char,freq)forchar,freqinfreq_dict.items()]heapq.heapify(heap)whilelen(heap)>1:left=heapq.heappop(heap)right=heapq.heappop(heap)merged=HuffmanNode(freq=left.freq+right.freq,left=left,right=right)heapq.heappush(heap,merged)returnheap[0]ifheapelseNonedefbuild_code_table(root):"""从霍夫曼树生成编码表"""code_table={}deftraverse(node,code):ifnode.charisnotNone:code_table[node.char]=codeor'0'# 处理单字符情况else:traverse(node.left,code+'0')traverse(node.right,code+'1')ifroot:traverse(root,'')returncode_tabledefhuffman_encode(text,code_table):"""编码文本"""return''.join(code_table[char]forcharintext)defhuffman_decode(encoded,root):"""解码比特流"""decoded=[]node=rootforbitinencoded:node=node.leftifbit=='0'elsenode.rightifnode.charisnotNone:decoded.append(node.char)node=rootreturn''.join(decoded)

3. 测试霍夫曼编码:英文文本压缩

# 示例文本text="this is an example of a huffman tree"freq=Counter(text)print("字符频率:",dict(freq))# 构建编码root=build_huffman_tree(freq)code_table=build_code_table(root)print("\n霍夫曼编码表:")forchar,codeinsorted(code_table.items()):print(f"'{char}':{code}")# 编码/解码encoded=huffman_encode(text,code_table)decoded=huffman_decode(encoded,root)assertdecoded==text,"解码失败!"# 计算压缩率original_bits=len(text)*8# ASCIIcompressed_bits=len(encoded)entropy=-sum((count/len(text))*np.log2(count/len(text))forcountinfreq.values())theoretical_min=entropy*len(text)print(f"\n原始大小:{original_bits}比特")print(f"压缩后:{compressed_bits}比特")print(f"理论最小:{theoretical_min:.1f}比特")print(f"压缩率:{original_bits/compressed_bits:.2f}:1")print(f"效率:{theoretical_min/compressed_bits:.2%}")

输出示例:

压缩率: 2.15:1 效率: 92.3%

4. 信道容量仿真:二元对称信道(BSC)

defbinary_entropy(p):"""二元熵函数 H_b(p)"""ifp==0orp==1:return0.0return-p*np.log2(p)-(1-p)*np.log2(1-p)defbsc_capacity(p):"""BSC 信道容量"""return1-binary_entropy(p)# 仿真不同错误概率下的容量p_vals=np.linspace(0,0.5,100)capacities=[bsc_capacity(p)forpinp_vals]plt.figure(figsize=(8,5))plt.plot(p_vals,capacities,'b-',linewidth=2)plt.axvline(0.1,color='r',linestyle='--',label='p=0.1 → C≈0.53')plt.title('二元对称信道(BSC)容量')plt.xlabel('翻转概率 p');plt.ylabel('信道容量 C (比特/符号)')plt.legend();plt.grid(True)plt.show()# 打印典型值forpin[0.01,0.1,0.2]:print(f"p={p:.2f}→ C={bsc_capacity(p):.4f}比特/符号")

5. AI 应用:模拟 BPE 分词的信息效率

defsimulate_bpe_efficiency(text,vocab_size=1000):""" 简化模拟:统计 n-gram 频率,计算平均码长 (真实 BPE 更复杂,此处仅演示思想) """# 统计字符级频率char_freq=Counter(text)char_entropy=-sum((f/len(text))*np.log2(f/len(text))forfinchar_freq.values())# 假设 BPE 将文本压缩为 tokens,平均长度减少# 简化:假设 token 数 = len(text) / avg_token_lenavg_token_len=3# 假设平均 token 长度为 3 个字符num_tokens=len(text)/avg_token_len# 估计 token 级熵(简化:均匀分布)token_entropy=np.log2(vocab_size)# 最坏情况total_bits=num_tokens*token_entropy char_bits=len(text)*char_entropy compression_ratio=char_bits/total_bitsreturn{'char_level_entropy':char_entropy,'token_level_bits':total_bits,'compression_ratio':compression_ratio}# 测试sample_text="the quick brown fox jumps over the lazy dog "*100result=simulate_bpe_efficiency(sample_text)print("BPE 模拟结果:")fork,vinresult.items():print(f"{k}:{v:.2f}")

💡真实 BPE(如 GPT-2):

  • 词汇表大小 50,257
  • 英文平均每个 token ≈ 4 字符
  • 压缩率 ≈ 4:1(相比 UTF-8)

6. 率失真权衡:图像压缩模拟

fromsklearn.clusterimportKMeansfromPILimportImagedefrate_distortion_simulation(image_path,ks=[2,4,8,16,32]):"""用 K-Means 模拟率失真权衡(颜色量化)"""img=np.array(Image.open(image_path).convert('RGB'))h,w,c=img.shape pixels=img.reshape(-1,c).astype(float)rates=[]distortions=[]forkinks:kmeans=KMeans(n_clusters=k,random_state=0).fit(pixels)labels=kmeans.labels_ compressed=kmeans.cluster_centers_[labels].reshape(h,w,c)# 码率 R ≈ log2(k) 比特/像素rate=np.log2(k)# 失真 D = MSEdistortion=np.mean((img-compressed)**2)rates.append(rate)distortions.append(distortion)returnrates,distortions# 注意:需提供一张图片路径,或使用合成数据# rates, dists = rate_distortion_simulation('example.jpg')# plt.plot(rates, dists, 'o-')# plt.xlabel('码率 R (比特/像素)'); plt.ylabel('失真 D (MSE)')# plt.title('率失真权衡曲线'); plt.show()

📌解释

  • $ k \uparrow $ → $ R \uparrow $, $ D \downarrow $
  • 曲线凸性体现边际收益递减

五、总结:信息论在 AI 时代的角色

概念传统应用AI/现代应用
信道容量通信速率极限神经网络层间信息流分析
无损压缩ZIP, PNGTokenization (BPE, WordPiece)
率失真理论JPEG, MP3表示学习、模型量化、蒸馏
互信息特征选择信息瓶颈、对比学习(InfoNCE)
数据不确定性正则化(最大熵原则)、探索(强化学习)

💡终极洞见
深度学习 = 在计算约束下,寻找最优的信息表示与传输方案
从输入到输出,每一层都在进行压缩(去除冗余)与扩展(提取特征)的博弈。


后续

python过渡项目部分代码已经上传至gitee,后续会逐步更新。

资料关注

公众号:咚咚王
gitee:https://gitee.com/wy18585051844/ai_learning

《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/16 5:14:22

ClearML自动化TensorFlow超参搜索流程

ClearML自动化TensorFlow超参搜索流程 在现代AI研发环境中&#xff0c;一个常见的困境是&#xff1a;团队花费大量时间反复训练模型、手动调整学习率和批量大小&#xff0c;却难以系统化地追踪哪一次实验真正带来了性能提升。更糟糕的是&#xff0c;当某个“神奇”的高准确率结…

作者头像 李华
网站建设 2026/1/14 22:06:16

MultiWorkerMirroredStrategy实战配置要点

MultiWorkerMirroredStrategy实战配置要点 在深度学习模型日益庞大的今天&#xff0c;单机训练已经难以满足企业级AI项目的算力需求。一个典型的场景是&#xff1a;团队正在训练一个基于BERT的自然语言理解模型&#xff0c;使用单台8卡服务器需要近一周时间才能完成一轮预训练。…

作者头像 李华
网站建设 2026/1/15 7:48:16

CSS相关中文书籍

《CSS权威指南》&#xff08;Eric A. Meyer著&#xff0c;中国电力出版社&#xff09; 经典教材&#xff0c;系统讲解CSS基础与高级特性&#xff0c;适合系统学习。《CSS揭秘》&#xff08;Lea Verou著&#xff0c;人民邮电出版社&#xff09; 聚焦实战技巧&#xff0c;通过案例…

作者头像 李华
网站建设 2026/1/19 7:25:30

ParameterServerStrategy企业级训练部署方案

ParameterServerStrategy 企业级训练部署方案 在推荐系统、广告点击率预测等典型工业场景中&#xff0c;模型的嵌入层动辄容纳上亿甚至百亿级别的稀疏特征 ID。面对如此庞大的参数规模&#xff0c;传统的单机训练早已力不从心——显存溢出、训练停滞、扩展困难成了常态。如何构…

作者头像 李华
网站建设 2026/1/18 16:46:38

Prefetch、Cache与Shuffle的正确组合方式

Prefetch、Cache与Shuffle的正确组合方式 在训练一个图像分类模型时&#xff0c;你是否遇到过这样的情况&#xff1a;GPU利用率长期徘徊在30%以下&#xff0c;日志显示“数据加载耗时远超前向传播”&#xff1f;这并不是硬件性能不足&#xff0c;而是典型的数据管道瓶颈。即便使…

作者头像 李华
网站建设 2026/1/18 21:43:14

没有契约测试的微服务是什么样的?

01.微服务为什么需要契约测试 首先我介绍一下公司的情况。我们使用的是微服务架构&#xff0c;每个部分会负责其中的几个微服务的研发和维护。我所在的部门维护公司的支付服务&#xff08;billing&#xff09;&#xff0c;这个服务需要依赖其他部门的几个服务。 当用户需要支…

作者头像 李华