You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python实现符合特定偏置规则的比特串转移概率矩阵?

实现满足规则的比特通信转移概率矩阵

要实现符合你要求的转移概率矩阵,核心思路是给不同类型的比特翻转分配差异化的权重,通过加权后的概率分布满足“翻转越多概率越小”和“0→1翻转概率低于1→0”的不对称性,最后归一化保证每行概率和为1。

核心逻辑拆解

我们需要为每个转移i→j(实际值i,观测值j)计算两个关键指标:

  • k01:从i的0比特翻转为j的1比特的数量(0→1翻转次数)
  • k10:从i的1比特翻转为j的0比特的数量(1→0翻转次数)

然后基于这两个指标定义未归一化概率:

  1. 为了满足翻转越多概率越小:总翻转次数(k01 + k10)越多,未归一化概率越低
  2. 为了满足不对称性:给0→1翻转分配更高的“代价”(或更低的权重),使得相同翻转次数下,包含更多0→1的转移概率更小

这里推荐两种常用的概率计算方式:


方法1:指数衰减(推荐,易调整)

利用指数函数的衰减特性,给不同翻转类型设置不同的代价权重:

  • 设w01为0→1翻转的代价(比如w01=2.0)
  • 设w10为1→0翻转的代价(比如w10=1.0),保证w01 > w10(这样0→1翻转的代价更高,对应概率更低)

未归一化概率为:exp(-(k01 * w01 + k10 * w10)),然后对每行的未归一化概率求和并归一化,确保每行和为1。

Python代码实现

import numpy as np

def create_transition_matrix(n):
    size = 2 ** n
    P = np.zeros((size, size))
    # 定义翻转代价:w01 > w10 保证不对称性
    w01 = 2.0
    w10 = 1.0
    
    for i in range(size):
        unnormalized = []
        for j in range(size):
            k01 = 0
            k10 = 0
            # 逐比特统计翻转类型
            for m in range(n):
                bit_i = (i >> m) & 1
                bit_j = (j >> m) & 1
                if bit_i == 0 and bit_j == 1:
                    k01 += 1
                elif bit_i == 1 and bit_j == 0:
                    k10 += 1
            # 计算未归一化概率
            prob = np.exp(-(k01 * w01 + k10 * w10))
            unnormalized.append(prob)
        # 归一化,保证每行和为1
        unnormalized = np.array(unnormalized)
        P[i] = unnormalized / unnormalized.sum()
    
    return P

# 测试n=3(8×8矩阵)
P = create_transition_matrix(3)
# 验证规则2:p(001|000) < p(000|001)
print("p(001|000):", P[0, 1])
print("p(000|001):", P[1, 0])
# 验证规则1:p(100|000)(1次翻转)> p(110|000)(2次翻转)
print("p(100|000):", P[0, 4])
print("p(110|000):", P[0, 6])

方法2:多项式权重(更直观)

直接给不同翻转类型设置概率权重:

  • 设a为单个0→1翻转的权重(比如a=0.1)
  • 设b为单个1→0翻转的权重(比如b=0.3),保证0 < a < b < 1

未归一化概率为:(a ** k01) * (b ** k10),同样归一化后得到每行和为1的矩阵。

代码片段替换

把方法1中的未归一化概率计算替换为:

prob = (0.1 ** k01) * (0.3 ** k10)

参数调整说明

  • 调整w01和w10(或a和b)的差值,可以控制不对称性的强弱:差值越大,0→1和1→0的概率差异越明显
  • 增大w01和w10的绝对值(或减小a和b),会让非对角元素的概率更小,矩阵更接近对角矩阵(即错误概率更低)

内容的提问来源于stack exchange,提问作者Marion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 23:07:28