信息论与编码_生物信息学中的信息论基础(一)

你好!作为你们的一员,在读本科四年级的生物技术专业的我与大家再次见面了。上期我们共同探讨了《R、Python与Julia基础简介与入门》这篇文章(《R、Python与Julia基础简介与入门》),具体内容详见:https://zhuanlan.zhihu.com/p/103705200
本次课程中,我将带领大家一起了解生物信息学中的信息论.本次内容仅具抛砖引玉之效,仅涉及信息论的一些基础内容.如对信息论特别感兴趣,建议各位购买相关教材以深入学习.
本文基于的教科书是由电子工业出版社出版的,由姜丹老师和钱玉美老师编写的信息论与编码基础一书。
1. 什么是信息?
1948年的时候,美国科学家香农在该年的论文《通信的数学理论》中为信息论奠定了理论基础。在该论文中,香农将信息定义为消除了不确定性的东西;这相当于减少了不确定性前后所存在的量。(照片见图1)
香农到底有多厉害呢?这里引用知乎上用户“灵剑“的一段话:
别的学科的先驱者开创了一个新的研究方向,在经典信息论领域中被香农奠定其理论体系的核心。
只要你在经典信息论框架内活动,则三大定理将限制你的应用范围;
你的工程应用也只能局限于较为基础的研究阶段。
类似于站在高山之巅俯视群峰时,
在攀登的过程中总会感到力不从心——而香农早已站在那里等待着你。

图1为克劳德·艾尔伍德·香农(Claude Elwood Shannon),以其名字命名的信息论之父。他出生于美国纽约州罗切斯特县的奥萨卡社区(位于美国内布拉斯州),于1916年4月30日出生,在世于2001年2月24日去世。
人们普遍认识到,在数学领域中可以用概率来量化不确定性的大小。\x0d\x0d举例而言,在过去几年中观察到的情况表明:中国男足以极低的概率赢得世界杯冠军。\x0d\x0d因此当这一事件发生时我们能够显著减少其带来的不确定程度。\x0d\x0d同样地,在奥运会赛场上观察到的情况则是:中国乒乓球队夺冠的概率极高。\x0d\x0d基于上述分析我们可以得出结论:香农所提出的关于信息的基本理论完美地解决了如何量化和衡量这一概念的问题
2. 单符号离散信源
信源属于信息集合这一概念。传递的信息若被定义为单一符号的形式,则可被归类为单符号离散信息源,并被认定为具有概率分布的一组离散符号集合。其数学表示形式为\mathcal{X} = \{x_i, p(x_i)\}其中\mathcal{X}代表该种类型的信息源x_i表示可能存在的各个符号而p(x_i)则对应于每个符号出现的概率。
例如:投掷一个均匀的六面骰子时,默认将朝上的面点数视为随机试验的结果,并将其视为该信源(source)的信息输出值。由此可知该信源属于单符号离散平稳无记忆信息源类型。设随机变量X来表示该信源的所有可能取值,则其状态空间(即所有可能取值)为{1,2,3,4,5,6};而其概率空间则由每个结果出现的概率均等决定即分别为P(X=xi)=1/6 (i=1,2,…,6)。其概率分布情况如公式(1)所示。
3. 信源符号的自信量
改写说明
,每一种不同符号
含有的信息量
称为符号
的“自信量”。假设信源X发出某符号
,接受者准确无误的接收到信息
,此时就完全消除了对信源发出符号
的不确定性,即:
根据公式2,信源符号
的自信量
,等同于信源发出
的不确定性。而信源发出符号
的不确定性 $
,一定是信源符号
的先验概率
的某一函数:
同时
必须满足以下四个公理条件:
低概率事件发生时,在消除了较高的不确定性后带来的信息价值更高。举例而言,“中国足球队赢得世界杯”的消息所包含的信息价值高于“乒乓球队赢得奥运会”的消息(假设两支队伍的实力相当)。因此,
是
的单调递减函数。
(2):太阳从西边升起的现象被称为不可能事件,在概率论中其发生概率被定义为零(即P=0)。若该现象发生,则会对相关领域的人们造成巨大的影响与挑战;这一描述有助于我们更好地理解不可能事件的本质及其在现实中的应用范围
改写说明
(4):两人各自独立地掷同一个均匀的六面骰子。甲掷出了6点,乙掷出了4点。当我们得知这两个结果时,所获信息量等于两人各自所获信息量之和。即:
综上所述,我们可以获得满足这以上四个条件的函数是:
一般情况下,我们会以“2”为底,此时自信量
以‘比特’为单位(缩写为bit),实际上我认为自信量的物理意义是用来表示信息编码所需所需的位数。我们可以通过举例来说明这一概念。
例如一个随机变量X={
},各个符号发生概率相等,即都是0.25,则:
即:
的不确定性可以用两位二元数字(如00、01、10、11)来表示{...};同样可以用一个四元数字(如1、2、3、4)来表示{...}。从物理意义上讲,自信量单位应反映编码所需的比特数量。通常情况下,默认采用二分法作为基数,并以比特作为信息的基本单位。
4. 信息熵
对于一个给定信源,我们可以求出每一个特定符号
该所包含的信息量,并且每一个随机变量的自信心度都不能作为信源的整体信息测度指标。因为由此可知, 自信心衡量的是某个特定事件发生时所带来的信息量, 而并非在结果确定前对所有可能发生事件的信息期望值. 因此在此背景下我们引入了信息熵这一概念.
我们假定一个信源空间
,信源
含有r个随机变量,每个随机变量
的发生概率为
基于我们所关注的目标,在计算某个随机变量的信息熵时, 应当考虑到其所有可能取值及其对应事件的信息量期望. 具体而言, 这一数值等于r个信元的数量.
在信源X的概率空间
:{
}中的统计平均值:
由此可见,由公式5可知,信源X的整体信息测度指标H(X)即为信源X的信息熵.信息熵不如同质性参数
同样地,在通信系统中通常用一个变量I(a_i)来表征信源发出某一特定符号a_i所携带的信息量。或者是从整体上来衡量,在通信系统中通常用一个期望值I(X)来代表信源X每个输出符(即任何一个符号)所包含的平均信息量。或者是在信源发送信息之前
5. R语言计算信息熵
在R语言中存在名为entropy的一个软件包,在该软件包中不仅可以进行信息熵的计算还可以用于计算平均互信息等其他指标(具体关于平均互信息的内容将在下次文章中为大家详细介绍)
##我们先下载entropy这个包
install.packages("entropy")
##加载entropy这个包
library(entropy)
##我们举一个简单的例子来计算信息熵,例如我有一个位点,在这个位点有400个A,200个G,10个C,计算该位点的信息熵
##首先我们生成一个“400个A,200个G,10个C”的长字符变量
pos_A <- rep("A",times=400)
pos_G <- rep("G",times=200)
pos_C <- rep("C",times=10)
pos <- c(pos_A,pos_G,pos_C)
##对数据进行统计
pos_stat<- as.data.frame(table(pos))
##展示统计结果,A:400,C:10,G:200
pos_stat
'''
pos Freq
1 A 400
2 C 10
3 G 200
'''
##计算信息熵,使用第二列统计数目进行计算
pos_entropy <- entropy(pos_stat[,2],unit = "log2") ##[1] 1.023923
##根据信息熵计算bits值
pos_bits <- log2(4)-pos_entropy
实际上,在此之前大家可能已经注意到,在我们的例子中计算得到的pos_bits这一数值本质上就是我们在寻找motif过程中所获得的motif图上的bits值(见图2),bits值是如何计算出来的
(如果统计的是脱氧核苷酸的数量,则为4;如果是氨基酸的数量,则为20)这也反映出'信息熵'在生物信息学领域的一个重要应用。

图1:一个motif示例图,y轴代表bits值,x轴代表序列位置
6.尾言
这篇短文仅限于介绍生物信息学领域中的基础信息论知识的第一篇文章。下回我们将一起探讨这一重要主题。下一篇文章可能会深入讨论以下内容:首先是在生物信息学中如何应用信息熵的概念;其次是对条件熵的详细阐述;最后则是关于互信息及其在该领域的具体运用方法等细节内容,请持续关注!
