Posts with tag 大四上

VAE

2024-12-12
julyfunnotes大四上机器学习

关于 VAE 理解的教程: https://spaces.ac.cn/archives/5253假定 $p(Z|X)$ 为一正态分布.(Z 为隐变量,X 为目标分布)注意不是假设 $p(Z)$为正态分布,不同 $X$ 显然必须有不同的隐藏分布,否则解码器无法区分它们,训练时 $X_i$ 和 $X^"hat"_i$ 就无法对应上.训练编码器使得样本对应的(编码器输出的)$mu$ 和 $log sigma^2$ 既要接近正态分布,又要对不同样本产生一些区别使得解码器能够将其还原到对应图像.接近正态又要有些微区分,这是一个权衡问题.为了防止正态分布采样以后,不同样本直接混在一起,其实不同类图像还是独占某一隐变量空间的区域的(这个我主成分分析绘制过).Hint:正态分布的参数为 runtime 参数(中间层输出结果),不是 traintime 权重.大致代码(见 speit-ml-tp 仓库) :from torch.nn.functional import binary_cross_entropy from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pyplot as plt class Sampling(nn.Module): def forward(self, mu, logvar): std = torch.exp(0.5 * logvar) eps = torch.randn_like(std) return mu + eps * std class Encoder(nn.Module): def __init__(self, latent_dim): super(Encoder, self).__init__() self.conv1 = nn.Conv2d(1, 32, kernel_size=3, stride=2, padding=1) self.conv2 = nn.Conv2d(32, 64, kernel_size=3, stride=2, padding=1) self.fc = nn.Linear(64 * 7 * 7, 16) self.fc_mu = nn.Linear(16, latent_dim) self.fc_logvar = nn.Linear(16, latent_dim) def forward(self, x): x = torch.relu(self.conv1(x)) x = torch.relu(self.conv2(x)) x = x.view(x.size(0), -1) x = torch.relu(self.fc(x)) mu = self.fc_mu(x) logvar = self.fc_logvar(x) return mu, logvar class Decoder(nn.Module): def __init__(self, latent_dim): super(Decoder, self).__init__() self.fc = nn.Linear(latent_dim, 64 * 7 * 7) self.deconv1 = nn.ConvTranspose2d(64, 64, kernel_size=3, stride=2, padding=1, output_padding=1) self.deconv2 = nn.ConvTranspose2d(64, 32, kernel_size=3, stride=2, padding=1, output_padding=1) self.deconv3 = nn.ConvTranspose2d(32, 1, kernel_size=3, padding=1) def forward(self, z): x = torch.relu(self.fc(z)) x = x.view(-1, 64, 7, 7) x = torch.relu(self.deconv1(x)) x = torch.relu(self.deconv2(x)) x = torch.sigmoid(self.deconv3(x)) return x class VAE(nn.Module): def __init__(self, latent_dim): super(VAE, self).__init__() self.encoder = Encoder(latent_dim) self.decoder = Decoder(latent_dim) self.sampling = Sampling() def forward(self, x): mu, logvar = self.encoder(x) z = self.sampling(mu, logvar) return self.decoder(z), mu, logvar def loss_function(recon_x, x, mu, logvar): # reconstruction BCE = binary_cross_entropy(recon_x, x, reduction='sum') KLD = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp()) return BCE + KL

4-缓存

2024-12-08
julyfunnotes大四上计算机体系结构

mostly gpt-4o写策略(Write Policies)写回(Write-back): 保证仅直接操作缓存缓存中映射了内存的某一些地址。如果写时目标地址在缓存中,则称为“写命中”,此时可以先写入缓存,暂时不写入内存. 之后会刷入内存.当发生写命中时,数据只写入缓存,而不立即写入主存。写入缓存后,标记为“脏”的位会被设置为1,表示该块数据已被修改但尚未写入主存。写入缓存的速度很快,因此写回缓存的写延迟通常很小。当一个块从写回缓存中被驱逐时,如果其“脏”位为1,则必须将该块的数据写入主存。这增加了硬件实现的复杂性。直写(Write-through): 保证操作主存当发生写命中时,数据同时写入缓存和主存。写入缓存的速度很快,但写入主存的速度较慢,因此直写缓存的写延迟比写回缓存的要慢。直写缓存使硬件设计更简单,因为可以假设主存中的数据始终是最新的。写绕过(Write-around):什么玩意儿在任何情况下,数据都直接写入主存。如果写入的数据块在缓存中存在,则将其有效位设置为无效。本质上,写绕过缓存中不存在写命中,写“命中”与写未命中执行相同的操作。未命中策略(Miss Policies)写分配(Write-allocate):保证仅直接操作缓存当发生写未命中时,将未命中的块加载到缓存中。针对写回、写分配缓存,这意味着数据不会直接写入主存,而是先写入缓存,随后在块被驱逐时再更新主存。无写分配(Write-No-Allocate):保证操作主存未命中时,数据直接写入主存,而不将数据加载到缓存中。这种策略适用于写操作较少的情况,因为它避免了不必要的缓存替换。缓存替换策略LRU(Least Recently Used,最近最少使用):当需要驱逐一个缓存块时,选择那个最久未被使用的块。这种策略假设最近使用的数据块在未来也可能会被再次使用,因此优先保留最近使用的块。实现LRU策略需要跟踪每个块的使用时间,这可能需要额外的硬件或软件开销。Random(随机替换):当需要驱逐一个缓存块时,随机选择一个块进行驱逐。这种策略实现简单,不需要跟踪缓存块的使用历史。虽然随机替换策略在某些情况下可能不如LRU等策略高效,但在实现复杂度和性能之间提供了一个平衡点。N 路N-Way Set Associative(N路组相联)是一种缓存放置策略,它结合了直接映射和全相联缓存的优点。缓存被分成若干组(sets),每组包含多个缓存块(ways)。内存地址首先映射到一个特定的组,然后可以放置在该组内的任何一个块中。具体参数解释Associativity (相联度):在这张图片中,相联度设置为4,这意味着缓存是4路组相联。这表示每个组内有 N = 4 个缓存块。Cache Size (缓存大小):缓存总大小为256字节。Block Size (块大小):假设块大小为16字节。计算组数缓存的总大小为256字节,相联度为4,块大小为16字节:每组的大小 = 相联度 × 块大小 = 4 × 16 = 64字节组数 = 缓存总大小 / 每组大小 = 256 / 64 = 4组工作原理地址映射:内存地址通过索引部分映射到特定的组,索引的计算方式是:(内存地址 / 块大小) % 组数例如,对于一个地址0x00,块大小为16字节,组数为4:组索引 = (0x00 / 16) % 4 = 0地址0x10:组索引 = (0x10 / 16) % 4 = 1L1 & L2image.png|500就是说 L1 没访问到,才去访问 L2

CH4-信道

2024-11-29
julyfunnotes信息与编码大四上

平均互信息image.png|500其中 $I(x_i; y_j) = log p(x_i|y_j) / p(x_i)$ 即 X 的信息量减去知道 Y 后 X 的信息量(收到 Y) 对于 X 的信息量的贡献.对称性: $I(X; Y) = I(Y; X)$非负性单次通信可能使 Y 的不确定性增大,但是统计平均一定是不确定性减小凸性I(X; Y) 是 关于 $p(bold(x^->))$ 向量的一个上凸函数,也就是说 x 知道 $I(x_i, y_j)$ 的情况下,$x$ 比较均匀的分布比较好.信道容量若知道 x, y 的转移矩阵,定义 $R_t = I(X, Y) / t$ 为信道传输速率,取最优的 $X$ 分布使得其最大,就得到信道容量 C.离散单符号信道及其容量容量容量就是给定转移矩阵的情况下求 $X$ 和 $Y$ 的分布使得 $I$ 最大.无干扰离散信道输入输出一一对应: $C = log n$多输入对应一输出: 有损失,无噪声, C = max(H(Y))否则无损失,有噪声.对称性作业里转移矩阵的每一行表示 $x_i$ 到各个 $y_j$ 分布. 乘法为 $y = x P$. 每一行和为 1.每一行包含的元素相同,则显然噪声熵 $H(Y|X)$ 与 $x$ 分布无关. (准对称)最大化 $H(Y)$ 即可最大化 $I(X; Y)$所以需要 $Y$ 等概率分布.如果是对称信道,可推出 $X$ 等概率分布.[转移矩阵]这里一般用第 i 行表示输入信号,第 j 列表示输出信号.每一行和为 1[强对称]均匀分配错误信号.image.png|500[对称]每一行和每一列包含相同元素.性质:若输入等概率,则输出等概率.容量: 取输入对称,结果为 $H(Y) - H(Y | X)$ = $log s - H(a, b, c...)$[准对称]输入对称而输出不对称,每一行元素相同容量: 需要划分为若干对称矩阵.image.png|600ref: https://blog.csdn.net/qq_36488756/article/details/110517599扩展信道ex: 知道单个符号的转移矩阵 $2 times 2$,可求两个符号的联合转移矩阵 $4 times 4$附录教程: https://www.wbyblog.cn/archives/57.html[抄的结论] $$I(x_i y_j) = I(y_j) + I(x_i | y_j)$$[记忆] $$p(y|x) = p(x y) / p(x) => H(Y|X) = H(X Y) - H(X)$

CH2-信息的统计

2024-11-27
julyfunnotes信息与编码大四上

[自信息]概率小 50%,信息量 + 1$I(x_i) = -log(x_i)$[条件自信息]...**[互信息]用于衡量两个随机变量之间相互依赖性的量(成功传输的信息)$I(X; Y) = H(X) - H(X | Y) = H(Y) - H(Y | X)$[信源熵]就是自信息的期望, 对于无记忆信源. 是一个先验概率:$$H(X) = E[I(X)] = sum_(i = 1)^n p(x_i) I(x_i) = - sum_(i = 1)^n p(x_i) log p(x_i)$$单位 bit/symbol (信息每符号)。符号几率越平均,熵越大还有后验概率版本,即接收到了以后反算熵.[条件熵]即条件自信息的期望. $H(Y|X)$ 为已知随机变量 $X$ 的条件下随机变量 $Y$ 的不确定性.[噪声熵]: X 给到 Y 以后 Y 还有多少噪声.image.png|500[损失熵]:X 的多少信息没传过去.例子:$x_1 tilde x_8$ 必导致 $y_1$, $x_9 tilde x_16$ 必导致 $y_2$,则噪声熵为 $0$,损失熵 $3$,联合熵image.png|500[联合熵 Joint Entropy]:image.png|500不确定性图:image.png|300image.png|600image.png|500例:image.png|300image.png|600例:image.png[熵函数的属性]非负性对称性: 交换概率,熵不变确定性:如果存在一个概率 = 1,则信息量为 0.扩展性: 将其中一个 $p_i$ 分出一个极小量到另一个符号,熵不变.强可加性:$H(X Y) = H(X) + H(Y | X)$可加性: s-独立时有 $H(X Y) = H(X) + H(Y)$增性:将其中一个符号 $x$ 拆分成若干个符号(概率和为 $x$),熵增加.上凸性:对概率向量 $P$,$H$ 是上凸的极限性质:对于离散信源, 当各个符号概率一样的时候,$H$ 最大.例题[问] $[1 / 2, 1 / 4, 1 / 8, 1/ 8]$ 信源的熵$$1 dot 1 / 2 + 2 dot 1 / 4 + 3 dot 1 / 8 dot 2 = 4 / 7 "bits/symbol"$$可以用变长码(哈夫曼编码)来表示这些符号,可以做到平均编码长度为 $1.75

CH3-离散和连续源的信息熵

2024-11-27
julyfunnotes信息与编码大四上

[Chain rules for Entropy]计算有记忆源的信息熵公式.$$H(X^N) = sum_(i = 1)^N H(X_i | X_(1..i - 1))$$[带记忆多符号离散平稳源的极限熵]定义为: image.png|500image.png平均符号熵和条件熵都会趋于稳定值(极限熵).[?]连续熵[微分熵]这是去掉无穷大项以后的相对熵.$$h(X) = - integral_S f(x) log f(x) dif x$$计算机内部先离散.[正态分布熵]逆天,我推的. 注意积 $e^(-t^2)t^2$ 时,令 $u = e^(-t^2)t, v = t$:$$ integral e^(-t^2) t^2 dif t &= u^circle v - u^(circle circle) v^prime &= [-1 / 2 e^(-t^2) dot t]_(-oo)^(+oo) - integral -1 / 2 e^(-t^2) dif t &= 0 + 1 / 2 sqrt(pi) $$ image.png最大熵定理同样方差情况下,正态分布熵最大.$H_0$ : 符号等概率分布情况下具有的熵. $= log_2 "符号数量"$利用率 $eta = H_"real"(X) / (H_0(X))$, 冗余度 $gamma = 1 - eta$信源编码:冗余度越小越好信道编码:需要增加一些冗余度以提升抗干扰性.杂项条件熵一定小于无条件

3-内存布局

2024-10-28
julyfunnotes大四上计算机体系结构

通用名词IR: 指令寄存器PC: 程序计数器PCB: 进程控制块,存储进程状态(阻塞),PID,计数器等指令jmpi 100, CS: CS = 0 | 跳转到第 0 段起始位置 + 100 的位置程序分段 SegmentLDT : Local Descriptor Table 局部段表,存储每个段的编号,起始,大小,权限分页 Page一个段可由若干逻辑页组成PT: 页表,将逻辑页映射到物理帧帧则是物理分块,和页分块大小一致多级页表首先考虑物理 4GB 内存被分为 1M 个大小为 4KB 的帧每个进程使用一些帧,用一个 Page 结构体存储:// 以下为猜测 struct Page: 32bit { valid: ?, frame_id: 20bit offset: 12bit // 20 + 12 刚好表示一个 byte 地址 sign: R/W } each process has page: Page[1M] (stupid design)这里每个页条目为 4B开了一兆结构体,浪费 4M 内存,这些结构体需要 1024 页存储故引入 1024 个 2 级页条目,表示第 i 个 2 级页是否使用(每个 2 级页最多可存储 4KB / 4 = 1024 个 1 级页),若使用则地址在哪里,省无用空

单一市场

2024-10-21
julyfunnotes大四上欧洲经济学

用中文解释以下知识点。对其中的重要名词(如人名,机构,事件)给出英文和法文:all by gpt从共同市场到单一市场功能主义方法:让·莫内的方法Jean Monnet (让·莫内) 是欧洲一体化的主要推动者之一。他的功能主义方法强调通过经济合作实现政治一体化。莫内认为,通过在特定领域的合作(例如煤钢共同体),可以逐步实现更广泛的欧洲统一。市场的角色:共同语言,共同利益市场在欧洲一体化中扮演了重要角色。通过经济合作,各国能够找到共同的语言和利益,这为进一步的政治和社会一体化奠定了基础。市场的统一使得资源、资本和劳动力可以在成员国之间自由流动,促进了经济的整体发展。欧洲一体化的细红线The thin red line of European integration 指的是欧洲一体化过程中需要谨慎处理的界限。即在保持国家主权和实现超国家一体化之间找到平衡。这条“细红线”代表了成员国在推进一体化时需要面对的挑战和妥协。重要名词翻译Jean Monnet (英文) / Jean Monnet (法文)Common Market (英文) / Marché Commun (法文)Single Market (英文) / Marché Unique (法文)European Integration (英文) / Intégration Européenne (法文)法律与附则单一市场的法律框架在欧盟的80,000页法律文件中,有30,000页专门用于规范单一市场。这些法律和附则确保了成员国之间的经济活动顺畅进行。三大原则欧盟理事会的多数决原则E Council (欧盟理事会): 决策依据多数原则,即55%的成员国同意,并且这些国家代表至少60%的欧盟人口。European Council (英文) / Conseil Européen (法文)原产国法律的相互承认各成员国承认其他成员国的法律,这有助于减少贸易壁垒,促进商品和服务的自由流动。欧洲公司的法律地位European Corporation (欧洲公司): 根据欧洲法律设立的公司,其法律地位不依赖于各国的税收协调。European Law (英文) / Droit Européen (法文)纳入国家法律体系这些欧盟法律和附则需要被纳入各成员国的国家法律体系,以确保法律的一致性和可执行性。单一市场的记录不平等Unequal (不平等): 单一市场在不同国家和地区之间的影响不均衡。一些国家可能受益更多,而另一些国家可能面临挑战。对不同类型市场的差异化影响Differentiated impact (差异化影响): 单一市场对不同类型的市场(如商品、服务、劳动力)影响各异。有些市场可能发展迅速,而另一些则可能发展较慢。缓慢但持续的过程A slow but continuing process (缓慢但持续的过程): 单一市场的整合是一个渐进的过程,尽管进展缓慢,但一直在持续推进。重要名词翻译Single Market (英文) / Marché Unique (法文

k-means-n-hac-n-dbscan

2024-10-16
julyfunnotes大四上机器学习

K means目标:自动分 k 类步骤开始随机选 k 个作为 k 类中心点repeat:新点添加到最近中心点更新类别平均中心点HAC最小生成簇,在 $n^2$ 个边中选择 distance 最小的边合并。GPT:Complete Linkage(最大链接):计算两个簇之间的距离时,使用两个簇中所有点之间的最大距离。结果是形成紧密的、相对球形的簇。对噪声和离群点较为敏感。Single Linkage(最小链接):计算两个簇之间的距离时,使用两个簇中所有点之间的最小距离。可能导致“链式效应”,形成长而稀疏的簇。对噪声和离群点较不敏感。DBSCAN 算法“密度相连”的点(由某个高密度的点可到达它们) $<==>$ 两点在一个聚类簇到达者,沿途必须是高密度点see: https://cloud.tencent.com/developer/article/166488

No more posts to load.