详解变分自编码器
VAE 信息论 信息量 \(I(x)=-\log{P(x)}\),描述事件x中包含的信息量。 信息熵 设随机变量X~p(X),则X的熵被定义为: \[ H(p)=\mathbb{E}_{X\sim p(X)}[-\log p(X)]. \] 当X为离散随机变量时, \[ H(p)=-\sum_{i=1}^{n}p(x_i)\log p(x_i) \] 熵的数学化理解: 编码随机变量所需的最短平均编码长度 即对于更大概率的事件,采用更短的编码(同Huffman编码思路一致)。 证明: 假设编码的字符集大小为\(D\),若采用二进制编码,则\(D=2\). 假设存在需要编码的\(m\)个事件,每个事件的编码长度为\(l_i\). 根据编码理论中的Kraft–McMillan Inequality,在给定的码字字长下能够成功编码,当且仅当: \[ \sum_{i=1}^{m}D^{-l_i}\leq 1. \] 转为如下优化问题: \[ \min_{l_i}\sum_{i=1}^{m}p(x_i)l_i \] \[\sum_{i=1}^{m}D^{-l_i}\leq 1.\]...
AI导论-2024春-总笔记
这是北航2024春《人工智能导论》课的理论笔记,由笔者整理。 绪论 三种主流方法:符号主义、联结主义、行为主义 机器学习 从数据中学习知识:f(x)=y 按数据标注情况分类: * 监督学习:数据有标签、直接反馈、预测结果 * 无监督学习:数据无标签、无反馈、寻找数据规律 * 半监督学习:部分数据有标签,部分反馈,预测结果...
CMU15-445 Lecture#06 缓存池
在冯诺依曼架构中,数据存储在磁盘上,但必须加载到内存中才能执行操作。因此,如果数据库管理系统希望处理大量数据,它就必须能够高效地在磁盘与内存之间移动数据。这个任务由缓冲池管理器(Buffer Pool...
CMU15-445 Lecture#05 存储模型和压缩
本篇博客为CMU15-445(2024 Fall)中存储模型与压缩技术部分的理论学习笔记。 数据库工作负载 OLTP(在线事务处理):写操作密集 快速、短时间运行的操作,重复操作和简单查询,每次操作只处理一个实体。OLTP 工作负载通常写操作比读操作多,每次只读/更新少量数据。 * 示例:亚马逊商店。用户可以将物品添加到购物车并进行购买,但这些操作只影响他们自己的账户。 OLAP(在线分析处理):读操作密集 长时间运行的复杂查询(通常涉及计算聚合)和对大量数据的读取。在 OLAP 工作负载中,数据库系统通常会分析和推导来自 OLTP 端的数据。 * 示例: 个性化的亚马逊购物广告。网站分析用户购物车和购买的数据,然后为不同的用户选择不同的广告。 HTAP(混合事务和分析处理) OLTP 和 OLAP 工作负载在同一数据库实例中共存。 存储模型 DBMS的存储模型决定:元组在磁盘或内存上等物理介质上的组织形式。 N-元存储模型(NSM):行存储 在 NSM中,DBMS 将单个元组(行)的所有属性连续地存储在一个页面中,因此也称为“行存储”。 NSM 主要针对...
CMU15-445 Lecture#03,#04 数据库存储
本篇博客为CMU15-445(2024 Fall)中数据库存储部分的理论学习笔记。 存储结构 存储层次结构的最上面是离 CPU 最近的设备。这些设备速度最快,但也是最小且最贵的;随着距离 CPU 的增加,存储设备变得更大,但更慢。每 GB 存储的成本也会下降。 易失性设备 易失性:如果拔掉机器的电源,数据将丢失; 易失性存储支持快速的随机访问,具有字节可寻址的地址。这意味着程序可以跳到任何字节地址并获取数据。 非易失性设备 非易失性:该存储设备不需要持续供电,就能保持它存储的位; 块/页面可寻址:要读取某个特定偏移位置的值,程序必须先加载包含该值的 4 KB 页面到内存中; 适合顺序访问(一次读取多个连续的数据块)。 我们将其称为“磁盘”,暂时不会区分固态存储(SSD)和旋转硬盘(HDD)。 持久内存 介于DRAM和磁盘之间,结合了 DRAM 的快速性和磁盘的持久性。 持久内存的设计目标是达到两者的最佳平衡。最著名的例子是 Optane。 NVMe 表示非易失性内存快车。这些 NVMe SSD 并不是持久内存模块,而是通过改进的硬件接口连接的典型...
C++顺序容器
本篇隶属C++...
BUAA-OS Lab2 实验笔记
继上一篇,我们已经跳转到了init/init.c中的mips_init函数,即内核初始化的入口点,一起回顾一下: 123456789101112#ifdef MOS_INIT_OVERRIDDEN#include <generated/init_override.h>#elsevoid mips_init(u_int argc, char **argv, char **penv, u_int ram_low_size) { printk("init.c:\tmips_init() is called\n"); // lab2: //mips_detect_memory(ram_low_size); //mips_vm_init(); //page_init();}#endif...
CMU 14-445 Project#0(2024 Fall) C++ Primer
Lab0 C++ PrimerPrimer 写在开头 首先致谢CMU-db无私将这门质量极高、资源极齐全的数据库课程,以及相关基础设施(GradeScope, Discord)和课程资料(Lectures, Notes, Homework)完全开源,让一个在本科数据库课程上只学会了抽象理念和SQL语句的孩子,能踏上一条自学之路(手动狗头) 其次,感谢CS自学指南,将计算机领域的众多好课分享给我们. 本专题将详尽地记录2024 Fall对应Lecture和Lab的学习经历. 课程链接 课程主页:https://15445.courses.cs.cmu.edu/fall2024/ Discord:https://discord.com/channels/724929902075445281/752529819148877904 Gradescope:https://www.gradescope.com/courses/817458 Entry Code: WWWJZ5 (学校记得改成CMU) > In exchange for making this available to...
C++面向对象程序设计
本篇隶属C++ Primer中类设计工具专题,当前集中于面向对象程序设计。 什么是面向对象编程? 在面向对象编程(缩写为OOP)中,重点是创建程序定义的数据类型,这些数据类型既包含属性,也包含一组定义明确的行为。OOP中的“对象”一词,是指我们可以从此类类型中实例化的对象。 面向对象编程的核心理念是:数据抽象,继承和动态绑定。 继承 概述 基类:位于层次关系中的根部,定义所有类共同的成员变量和成员函数; 派生类:通过继承自动接收基类的成员函数和成员变量;可添加想要的其他函数或成员变量。 类派生列表:明确指出当前派生类是从哪个基类继承而来,示例: 1234class Bulk_Quote : public Quote{ // Bulk_Quote继承Quote public: double net_price() const override;} 定义基类和派生类 定义基类 12345678910111213141516class Quote{public: Quote()=default; Quote(cosn std::string...