信息论 | information theory | 信息度量 | information measures | R代码(一)

这个时代已经是多学科相互渗透的时代,纯粹的传统学科在没落,新兴的交叉学科在不断兴起。

  • life science
  • neurosciences
  • statistics
  • computer science
  • information theory

我的问题很简单:

  1. 一个细胞里到底保存了多少信息,复制、转录、翻译过程中传递了多少信息?
  2. 神经突触传递信息的上限是多少?

 

想回答这些问题就必须要学习信息论!


什么是信息?

两个同样的光碟里保存的信息是一样的吗?

人和信息的关系是什么?假设所有人都不存在了,信息还存在吗?

  

independence of random variables

  • Mutual Independence
  • Pairwise Independence
  • Conditional Independence

Markov chain

strictly positive

 

重点概念:

条件独立:独立与条件独立,X->Y->Z,X与Y不独立,Y与Z也不独立,X与Z呢?这就是条件独立。也就是X和Z的依赖关系(独立关系)借由Y产生,所以叫条件独立。举例:X:明天下雨,Y:今天下雨,Z:今天地面变湿了。

马尔科夫链:由条件独立引申而来。𝑝(𝑋1,𝑋2,,𝑋𝑛)=𝑝(𝑋1)𝑝(𝑋1𝑋2)𝑝(𝑋2𝑋3)𝑝(𝑋𝑛1𝑋𝑛)。马尔科夫链其实并不是严格的链,也有可能是环。小白都能看懂的马尔可夫链详解

马尔科夫子链:任意从马尔科夫链中取出m个节点,按顺序排列,新的马尔科夫链是原来的一个子链。(有点难以理解,明明断开了)

 

entropy

conditional entropy

mutual information

conditional mutual information

 

熵的数学定义:

和概率分布一样,熵也是随机变量的函数,更确切的说,熵是概率分布的函数。

此时我们讨论的都是离散随机变量,所以只能选离散分布来计算熵值。

可以看到,对于伯努利分布而言,当0和1出现概率都为0.5时,此时随机变量的概率分布的熵值最大,为1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
library(philentropy)
library(ggplot2)
library(Rlab)
 
# define probabilities P(X)
Prob <- 1:10/sum(1:10)
# Compute Shannon's Entropy
H(Prob)
 
x <- (0:1000)/1000
y <- unlist(lapply(x, function(x) {H(dbern(0:1, x))}))
ggplot(data=data.frame(prob=x, entropy=y), aes(x=prob, y=entropy)) +
  geom_bar(stat="identity") +
  labs(title = "Entropy of Bernoulli Distribution") +
  geom_hline(yintercept=0) +
  geom_vline(xintercept=0)
 
H(dbinom(1:100, size = 100, prob = 0.1))
H(dbinom(1:100, size = 100, prob = 0.3))
H(dbinom(1:100, size = 100, prob = 0.5))
H(dbinom(1:100, size = 100, prob = 0.7))
H(dbinom(1:1000, size = 100, prob = 0.7))
H(dbinom(1:1000, size = 1000, prob = 0.7))
ggplot(data=data.frame(x=1:100, probability=dbinom(1:100, size = 100, prob = 0.7)),
                aes(x=x, y=probability)) + geom_bar(stat="identity")
ggplot(data=data.frame(x=1:1000, probability=dbinom(1:1000, size = 100, prob = 0.7)),
       aes(x=x, y=probability)) + geom_bar(stat="identity")
ggplot(data=data.frame(x=1:1000, probability=dbinom(1:1000, size = 1000, prob = 0.7)),
       aes(x=x, y=probability)) + geom_bar(stat="identity")

为什么香农选的是这个公式?

代码可以参考我之前文章:统计分布汇总 | 生物信息学应用 | R代码 | Univariate distribution relationships

可以看到熵值函数是一个求和函数,基本单位是-p*log(p), 其中0<=p<=1. 所有的p值之和为1.

可以将这个基本函数可视化:

可以看到这并不是一个对称函数,极值在x=0.3678694时取得,为0.5307378。

1
2
3
4
5
6
7
h <- function(x) {-x*log2(x)}
curve(h, 0, 1) + abline(v=0.3678694, h=0.5307378)
plot(h) + abline(v=0.3678694, h=0.5307378)
# h=0.5307378
 
optimize(h, c(0,1), maximum = T)
# nlm(h, c(0,1))  

如何证明,对所有的p(x)的概率分布,h(x)的最大值都是在所有事件等概论时出现?相当于离散型的均匀分布。

最优化问题的求解与R实现

 

code alphabet - 决定了熵值函数里面的基

Shannon的熵值公式也可以用期望的角度来解读

  • average amount of information contained in X
  • the average amount of uncertainty removed upon revealing the outcome of X

binary entropy function

 

下面开始用直觉难以理解了:

joint entropy

conditional entropy

 

mutual information

conditional mutual information

 

variational distance

 

  

 

 

 

参考:

香农的信息论究竟牛在哪里?

Information Theory - R 

posted @   Life·Intelligence  阅读(550)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2018-05-20 (原创)PBS | SGE 智能任务投递系统monitor | python实现
TOP
点击右上角即可分享
微信分享提示