Recent
caffe 源码阅读笔记
·30 words·1 min
caffe做部署是YYDS!
blob
layer
net
激活函数
卷积
reshape
slice
loss function
reduce
eltwise
argmax
从马尔可夫性质出发:DP 无后效性、HMM 与 VAE 的知识联想
起因 # 继续跟着 MIT 6.S191 Lecture 5 学强化学习。上一篇理解了 Return、State Value Function \(V^\pi(s)\) 和 Action Value Function \(Q^\pi(s,a)\)。
接下来要学的是 Bellman Equation。
我之前隐约知道它能把 \(V^\pi(s)\) 写成递归形式——当前状态的长期价值,等于下一步的期望 Reward 加上折扣后下一状态的期望长期价值。但刚准备细看推导时,发现它有一个前提条件:
从 Return 到 Q-Function:强化学习如何评价一个尚未发生的决策
·10320 words·21 mins
上一篇结尾留了一个问题:
如果一个动作的长期回报要等到几十步甚至更多步之后才能知道,那 Agent 在当前状态下,如何判断不同动作的长期价值?
Return 可以衡量一条轨迹的累计收益。但做决策的时候,未来还没有发生——不存在一条可以直接计算的轨迹。那在当前时刻,怎么评价一个 State 甚至一个具体 Action 的长期价值?
从监督学习到强化学习:没有 Label,模型如何学会决策?
·7538 words·16 mins
起因 # 最近开始看 MIT 6.S191 的 Lecture 5——Deep Reinforcement Learning。
过去几个月写了不少笔记,从 RNN 到 Transformer,从 VAE 到 GAN,基本都属于 supervised 或 self-supervised 的范畴。之前梳理训练信号来源的那篇,整理了四种学习范式——supervised、unsupervised、semi-supervised、self-supervised——的核心区别在于训练信号是谁提供的。
GAN 的对抗到底发生在哪里:从 D(G(z)) 到 Distribution Matching
·7620 words·16 mins
上一篇讲完 VAE,走到一条因果链:VAE 通过把 Encoder 的输出从确定点变成概率分布,让 latent space 服从已知 prior,于是可以从 prior 采样、交给 Decoder 生成新样本。
整个过程很精巧,但回头看,它对概率计算的依赖很重:Encoder 参数化 \(q(z|x)\),训练目标里有 KL divergence、有 reconstruction likelihood,每一步都在和 density 打交道。
从伯努利分布推到二元交叉熵:二分类损失为什么长这样
·6016 words·13 mins
起因 # 最近在看 GAN 的时候,判别器的训练目标里反复出现两项:
\(\log D(x)\) 和 \(\log(1 - D(G(z)))\)
我能看出 \(\log D(x)\) 越大越好——\(D(x)\) 越接近 1,判别器越确信这是真实样本。也能看出 \(\log(1-D(G(z)))\) 在 \(D(G(z))\) 接近 0 的时候最大——判别器越确信生成的是假样本。
训练信号从哪里来:重新理解有监督、无监督、半监督与自监督学习
·3989 words·8 mins
起因 # 我过去一直把机器学习里的学习范式简单理解成两类:
Supervised Learning(有监督学习):每个样本有 label,训练时知道正确答案。 Unsupervised Learning(无监督学习):只有样本,没有 label。 这个分法一直挺好用。分类、回归是 supervised,聚类是 unsupervised,清清楚楚。
从 batch size 设多少到动态推理:重看 TensorRT 5 之后的演进
·3628 words·8 mins
一个部署工程师的困惑 # 几年前我在做计算机视觉模型的部署,用的是 TensorRT 4 和 5。每次把训练好的模型转成 TensorRT engine,都绕不开一个参数:maxBatchSize。
VAE 为什么要让 Latent Variable 变成一个概率分布
·8354 words·17 mins
起因 # 上一篇文章理清了 latent variable 和 latent space 的概念,最后停在一个地方:
不要直接在复杂的数据空间中生成数据。先在简单的 latent space 中采样一个 \(z\),再通过学到的映射把 \(z\) 变成 \(x\)。