【AI算法岗面试八股面经【超全整理】——信息论】

2024-05-28 04:44

本文主要是介绍【AI算法岗面试八股面经【超全整理】——信息论】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

AI算法岗面试八股面经【超全整理】

  • 概率论
  • 信息论
  • 机器学习
  • CV
  • NLP

目录

    • 1、自信息、信息熵
    • 2、相对熵(KL散度)、交叉熵
    • 3、联合熵与条件熵
    • 4、互信息

1、自信息、信息熵

自信息
概率与信息量的关系:概率越大的事件,提供的信息量越小;概率越小的事件,信息量越大
信息量计算公式:
I ( x ) = − log ⁡ p ( x ) I(x)=-\log p(x) I(x)=logp(x)
对数底与信息的单位:

  • 以2为底:bit(binary unit)
  • 以e为底:nat(nature unit)
  • 以10为底:Hart(Hartley)

熵(信息熵)
熵用来描述一个事件的不确定性,表示某事件所有可能发生的情况的信息量的期望值(所有可能情况信息量的均值)
设事件X共有n种可能,发生 x i x_i xi的概率为 p ( x i ) p(x_i) p(xi),那么该事件熵的计算公式:
H ( x ) = − ∑ i = 1 n p ( x i ) log ⁡ ( p ( x i ) ) = E ( log ⁡ 1 p ( x i ) ) H(x)=-\sum_{i=1}^{n}p(x_i)\log (p(x_i))=E(\log \frac{1}{p(x_i)}) H(x)=i=1np(xi)log(p(xi))=E(logp(xi)1)
基本性质:

  • 非负性: H ( X ) ≥ 0 H(X)\geq 0 H(X)0,当某事件是确定发生的事情,则其熵为0(太阳从东边升起的信息熵为0)
  • 某随机变量每次发生的情况越不确定(不确定性越大),则其熵值越大,此时,该变量的分布也越混乱
  • 当某事件对每种可能发生情况的概率是相等时,则其熵值最大

2、相对熵(KL散度)、交叉熵

相对熵(散度KL)
如果我们对于同一个随机变量 x 有两个单独的概率分布 P ( X ) P(X) P(X) Q ( X ) Q(X) Q(X),我们可以使用 KL 散度来衡量这两个分布的差异。
在机器学习中,P 往往用来表示样本的真实分布,Q 用来表示所预测的分布,那么 KL 散度是可以计算两个分布的差异,也是是 Loss 损失值。
D K L ( p ∣ ∣ q ) = ∑ i − 1 n [ p ( x i ) log ⁡ ( p ( x i ) ) − p ( x i ) log ⁡ ( q ( x i ) ) ] D_{KL}(p||q)=\sum_{i-1}^{n}[p(x_i)\log (p(x_i))-p(x_i)\log (q(x_i))] DKL(p∣∣q)=i1n[p(xi)log(p(xi))p(xi)log(q(xi))]
D K L ( p ∣ ∣ q ) = ∑ i − 1 n p ( x i ) log ⁡ ( p ( x i ) q ( x i ) ) D_{KL}(p||q)=\sum_{i-1}^{n}p(x_i)\log (\frac{p(x_i)}{q(x_i)}) DKL(p∣∣q)=i1np(xi)log(q(xi)p(xi))

  • KL散度的值始终大于0,并且当且仅当两分布相同时,KL散度等于0,当 P ( X ) P(X) P(X) Q ( X ) Q(X) Q(X)的相似度越高,KL距离越小
  • KL散度不对称,即P到Q的距离,不等于Q到P的距离

交叉熵
D K L ( p ∣ ∣ q ) D_{KL}(p||q) DKL(p∣∣q)公式进行变形可以得到
D K L ( p ∣ ∣ q ) = ∑ i − 1 n [ p ( x i ) log ⁡ ( p ( x i ) ) − p ( x i ) log ⁡ ( q ( x i ) ) ] D_{KL}(p||q)=\sum_{i-1}^{n}[p(x_i)\log (p(x_i))-p(x_i)\log (q(x_i))] DKL(p∣∣q)=i1n[p(xi)log(p(xi))p(xi)log(q(xi))]
D K L ( p ∣ ∣ q ) = ∑ i − 1 n − p ( x i ) log ⁡ ( q ( x i ) ) − H ( X ) D_{KL}(p||q)=\sum_{i-1}^{n}-p(x_i)\log (q(x_i))-H(X) DKL(p∣∣q)=i1np(xi)log(q(xi))H(X)
加入需要拟合的对象的分布是固定的(比如针对某一特定的数据集),那么 H ( X ) H(X) H(X)就应该是一个定值,所以优化时可以忽略这一项的影响,仅仅优化前一项,而交叉熵即为去掉原始事件信息熵的KL散度:
H ( p , q ) = − ∑ i − 1 n p ( x i ) log ⁡ ( q ( x i ) ) H(p,q)=-\sum_{i-1}^{n}p(x_i)\log (q(x_i)) H(p,q)=i1np(xi)log(q(xi))

3、联合熵与条件熵

联合熵
联合熵表示多个随机变量联合分布的不确定性。
计算公式:
H ( X , Y ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( x , y ) H(X,Y)=-\sum_{x\in X} \sum_{y\in Y}p(x,y)\log p(x,y) H(X,Y)=xXyYp(x,y)logp(x,y)
H ( X , Y ) ≤ H ( X ) + H ( Y ) H(X,Y) \leq H(X)+H(Y) H(X,Y)H(X)+H(Y),即联合熵不一定等于两个随机变量的信息熵之和。理解:观察X会获得Y一定的信息。

条件熵
两个随机变量,当知道Y时,X的平均不确定性称为条件熵。
计算公式:
H ( X ∣ Y ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( x ∣ y ) H(X|Y)=-\sum_{x\in X} \sum_{y\in Y}p(x,y)\log p(x|y) H(XY)=xXyYp(x,y)logp(xy)
条件熵和联合熵满足链式法则
H ( X , Y ) = H ( Y ) + H ( X ∣ Y ) = H ( X ) + H ( Y ∣ X ) H(X,Y)=H(Y)+H(X|Y)=H(X)+H(Y|X) H(X,Y)=H(Y)+H(XY)=H(X)+H(YX)

4、互信息

事物是普遍联系的,随机变量也存在相互关系,互信息可以用来刻画随机变量的相关程度。

  • 单独观察X得到的信息量是 H ( X ) H(X) H(X)
  • 已知Y后,X的信息量变为 H ( X ∣ Y ) H(X|Y) H(XY)
  • 了解Y后,X的信息量减少了 H ( X ) − H ( X ∣ Y ) H(X)-H(X|Y) H(X)H(XY)

定义:离散型随机变量X与Y之间的互信息 I ( X ; Y ) I(X;Y) I(X;Y)
I ( X ; Y ) = H ( X ) − H ( X ∣ Y ) = ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( x , y ) p ( x ) p ( y ) I(X;Y)=H(X)-H(X|Y)=\sum_{x\in X} \sum_{y\in Y}p(x,y)\log {\frac {p(x,y)}{p(x)p(y)}} I(X;Y)=H(X)H(XY)=xXyYp(x,y)logp(x)p(y)p(x,y)
I ( X ; Y ) = H ( X ) + H ( Y ) − H ( X , Y ) I(X;Y)=H(X)+H(Y)-H(X,Y) I(X;Y)=H(X)+H(Y)H(X,Y)

这篇关于【AI算法岗面试八股面经【超全整理】——信息论】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1009570

相关文章

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

Mysql中InnoDB与MyISAM索引差异详解(最新整理)

《Mysql中InnoDB与MyISAM索引差异详解(最新整理)》InnoDB和MyISAM在索引实现和特性上有差异,包括聚集索引、非聚集索引、事务支持、并发控制、覆盖索引、主键约束、外键支持和物理存... 目录1. 索引类型与数据存储方式InnoDBMyISAM2. 事务与并发控制InnoDBMyISAM

StarRocks索引详解(最新整理)

《StarRocks索引详解(最新整理)》StarRocks支持多种索引类型,包括主键索引、前缀索引、Bitmap索引和Bloomfilter索引,这些索引类型适用于不同场景,如唯一性约束、减少索引空... 目录1. 主键索引(Primary Key Index)2. 前缀索引(Prefix Index /

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring