CNN 参数量计算

image.png

  1. 计算每一个filter的权重参数量(包括bias):
    RGB图片,3通道,每个通道的filter核都是5*5,所以参数量为5*5*3,再加上一个bias,所以总共是5*5*3+1

  2. 计算一层上的神经元数目:
    每个神经元实际对应输出特征图中的一个像素点,所以得算出每个输出特征图的尺寸,即(((65-5+2*0)/3)+1)*(((77-5+2*0)/3)+1),每个filter会生成一个特征图,总共18个filter,所以总数为21*25*18

  3. 计算该层神经元的连接数:
    由于每个神经元都与一个完整的感受野(553)相连,对于每个神经元,连接数就是5*5*3,所以总连接数等于神经元数目*每个神经元的连接等于5*5*3*21*25*18

  4. 该层独立参数的个数:
    每个filter的独立参数*核数等于(5*5*3+1)*18

对比one-hot和bow和word-embedding

特点 one-hot bow word-embedding
表示方式 每个词是一个独热向量,每行只有一个位置是1,其他都是0 统计每个词在文档中出现的频次 将词映射到一个稠密的低维连续向量空间
维度 词表大小(通常很大,所以时空复杂度很高) 词表大小,存储方式像字典一样 自定义维度(比如300维)
向量特点 稀疏,正交 稀疏 稠密,连续
语义信息 无法表示词与词之间的关系 可以表示词频信息,但是无法表达语义关系 可以捕捉词的语义和语法关系
优点 简单直观
容易实现
简单
可表达词频信息
可以表达词的语义关系
降低维度
具有泛化能力
缺点 维度灾难,向量稀疏,无法表达语义 失去词序信息,维度仍然可能很大,无法表达语义关系 训练复杂,需要大量语料,结果不直观
适用于 小规模、简单分类任务 文本分类,关键词提取 深度学习,自然语言处理的各种任务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
one-hot
# 词表:["猫", "狗", "鱼", "鸟"]
"猫" -> [1, 0, 0, 0]
"狗" -> [0, 1, 0, 0]
"鱼" -> [0, 0, 1, 0]

bow
# 句子:"我喜欢猫,猫也喜欢我"
# 词表:["我", "喜欢", "猫", "也"]
向量表示:[2, 2, 2, 1] # 我(2次), 喜欢(2次), 猫(2次), 也(1次)

word-embedding
"猫" -> [-0.23, 0.45, 0.12, ..., 0.78] # 300维向量
"狗" -> [-0.21, 0.48, 0.15, ..., 0.76] # 相似词的向量会相近

总结:

  • One-Hot:每个词都是独立的,词与词之间没有关联
  • BoW:可以表达词频信息,但失去了词序和语义关系
  • Word Embedding:
    可以体现词的语义相似度(通过向量距离)
    可以进行词的类比推理
    维度大大降低,计算效率提高
    具有更好的泛化能力

某种题目的解题模板

1. 最大似然估计

步骤

  1. 统计每个类别的样本数量
  2. 计算每个类别的先验概率

示例
假设共有100篇文章,分属于三个类别:

  • 技术类:30篇
  • 体育类:45篇
  • 娱乐类:25篇

计算每个类别的先验概率:

P(Tech)=30100=0.3P(Tech) = \frac{30}{100} = 0.3

P(Sports)=45100=0.45P(Sports) = \frac{45}{100} = 0.45

P(Entertainment)=25100=0.25P(Entertainment) = \frac{25}{100} = 0.25

2. 信息熵

步骤

  1. 使用先验概率计算信息熵

公式

H(X)=iP(xi)log2P(xi)H(X) = -\sum_{i} P(x_i) \log_2 P(x_i)

示例

H(X)=(0.3log20.3+0.45log20.45+0.25log20.25)H(X) = - (0.3 \log_2 0.3 + 0.45 \log_2 0.45 + 0.25 \log_2 0.25)

H(X)=(0.3×(1.737)+0.45×(1.161)+0.25×(2.0))H(X) = - (0.3 \times (-1.737) + 0.45 \times (-1.161) + 0.25 \times (-2.0))

H(X)=(0.5210.5220.5)H(X) = - (-0.521 - 0.522 - 0.5)

H(X)1.543 bitsH(X) \approx 1.543 \text{ bits}

3. Softmax 函数

步骤

  1. 计算每个类别的 logits
  2. 使用 Softmax 函数将 logits 转换为概率

公式

Softmax(zi)=ezijezj\text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}}

示例
假设神经网络的输出层在某个输入文章上的 logits 为 [2.0, 1.0, 0.5],计算 Softmax 输出:

Softmax(2.0)=e2.0e2.0+e1.0+e0.5=7.38911.7560.629\text{Softmax}(2.0) = \frac{e^{2.0}}{e^{2.0} + e^{1.0} + e^{0.5}} = \frac{7.389}{11.756} \approx 0.629

Softmax(1.0)=e1.0e2.0+e1.0+e0.5=2.71811.7560.231\text{Softmax}(1.0) = \frac{e^{1.0}}{e^{2.0} + e^{1.0} + e^{0.5}} = \frac{2.718}{11.756} \approx 0.231

Softmax(0.5)=e0.5e2.0+e1.0+e0.5=1.64911.7560.140\text{Softmax}(0.5) = \frac{e^{0.5}}{e^{2.0} + e^{1.0} + e^{0.5}} = \frac{1.649}{11.756} \approx 0.140

4. 交叉熵损失

步骤

  1. 确定真实类别对应的概率分布
  2. 使用预测概率和真实概率计算交叉熵损失

公式

H(p,q)=ip(i)log2q(i)H(p, q) = -\sum_{i} p(i) \log_2 q(i)

示例
假设该文章的真实类别是技术类,即:

p(Tech)=1,p(Sports)=0,p(Entertainment)=0p(Tech) = 1, p(Sports) = 0, p(Entertainment) = 0

H(p,q)=(1log20.629+0log20.231+0log20.140)H(p, q) = - (1 \log_2 0.629 + 0 \log_2 0.231 + 0 \log_2 0.140)

H(p,q)=(log20.629)H(p, q) = - (\log_2 0.629)

H(p,q)=(0.668)H(p, q) = - (-0.668)

H(p,q)0.668 bitsH(p, q) \approx 0.668 \text{ bits}

总结

  1. 最大似然估计

    P(Tech)=0.3,P(Sports)=0.45,P(Entertainment)=0.25P(Tech) = 0.3, P(Sports) = 0.45, P(Entertainment) = 0.25

  2. 信息熵

    H(X)1.543 bitsH(X) \approx 1.543 \text{ bits}

  3. Softmax 函数

    P(Tech)0.629,P(Sports)0.231,P(Entertainment)0.140P'(Tech) \approx 0.629, P'(Sports) \approx 0.231, P'(Entertainment) \approx 0.140

  4. 交叉熵损失

    H(p,q)0.668 bitsH(p, q) \approx 0.668 \text{ bits}

Reinforcement Learning

Value Function

  • state value function: 状态值函数V(s)表示在给定策略π\pi下,从状态s开始的期望累计奖励,形式上,可以表示为Vπ(s)=Eπ[GtSt=s]V^\pi(s) = \mathbb{E}_\pi \left[ G_t \mid S_t = s \right],其中:
    GtG_t 是从时间步 tt 开始的累计奖励,通常定义为 Gt=Rt+1+γRt+2+γ2Rt+3+G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots,其中 γ\gamma 是折扣因子(0γ<10 \leq \gamma < 1)。
    Eπ\mathbb{E}_\pi 表示在策略 π\pi 下的期望。

  • action value function: 动作值函数Q(s,a)表示在给定策略π\pi下,从状态s开始采取动作a后的期望累计奖励,形式上,动作值函数可以表示为Qπ(s,a)=Eπ[GtSt=s,At=a]Q^\pi(s, a) = \mathbb{E}_\pi \left[ G_t \mid S_t = s, A_t = a \right],其中
    GtG_t 是从时间步 tt 开始的累计奖励。
    Eπ\mathbb{E}_\pi 表示在策略 π\pi 下的期望。

Reward Function

奖励函数 R(s,a) 定义了智能体在特定状态下采取特定动作后获得的即时奖励。它是一个标量值,用于衡量当前决策的好坏。形式上,奖励函数可以表示为:

R:S×ARR: S \times A \rightarrow \mathbb{R}

S为状态空间,A为动作空间,R(s,a)是在状态s下采取动作a后获得的即时奖励

状态值函数和动作值函数并不是奖励函数,但它们依赖于奖励函数来计算。这些函数在强化学习中用于评估策略的好坏,并指导智能体做出更好的决策。

当然可以!在强化学习中,策略(Policy)和折扣因子(Discount Factor)是两个非常重要的概念。下面分别详细解释这两个概念:

策略(Policy)
策略(Policy)是智能体(Agent)在给定状态下选择动作的规则。它决定了智能体在环境中如何行为。形式上,策略可以表示为一个概率分布,定义了在每个状态下选择每个动作的概率。

策略通常表示为 π(as)\pi(a \mid s),其中:

  • ss 是当前状态。

  • aa 是在状态 ss 下选择的动作。

  • π(as)\pi(a \mid s) 是在状态 ss 下选择动作 aa 的概率。

  • 确定性策略:在每个状态下,智能体总是选择同一个动作。例如,π(as)=1\pi(a \mid s) = 1 对于某个特定的 aa

  • 随机性策略:在每个状态下,智能体以一定的概率选择不同的动作。例如,π(a1s)=0.7\pi(a_1 \mid s) = 0.7π(a2s)=0.3\pi(a_2 \mid s) = 0.3

折扣因子(Discount Factor)
折扣因子(Discount Factor)是一个介于0和1之间的参数,通常表示为 γ\gamma。它用于量化未来奖励相对于当前奖励的重要性。折扣因子的作用是确保未来的奖励在当前决策中的权重逐渐减小。

折扣因子 γ\gamma 用于计算累积奖励(Return) GtG_t,定义为:

Gt=Rt+1+γRt+2+γ2Rt+3+G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots

其中:

  • Rt+1R_{t+1} 是在时间步 t+1t+1 获得的即时奖励。

  • γ\gamma 是折扣因子,0γ<10 \leq \gamma < 1

  • 短期 vs 长期:折扣因子 γ\gamma 决定了智能体更重视短期奖励还是长期奖励。

    • γ\gamma 接近1时,智能体更关注长期奖励,可能会采取更长远的策略。
    • γ\gamma 接近0时,智能体更关注短期奖励,可能会采取更短视的策略。
  • 收敛性:折扣因子有助于确保累积奖励的收敛性,避免无限期的未来奖励对当前决策产生过大的影响。

假设智能体在一个迷宫游戏中,每走一步获得 -1 的奖励,到达终点获得 +100 的奖励。

  • 如果 γ=0.9\gamma = 0.9,则从当前状态开始的累积奖励 GtG_t 为:
    Gt=1+0.9(1)+0.92(1)++0.9n(100)G_t = -1 + 0.9(-1) + 0.9^2(-1) + \cdots + 0.9^n(100)

  • 如果 γ=0.5\gamma = 0.5,则从当前状态开始的累积奖励 GtG_t 为:
    Gt=1+0.5(1)+0.52(1)++0.5n(100)G_t = -1 + 0.5(-1) + 0.5^2(-1) + \cdots + 0.5^n(100)

  • 策略 π(as)\pi(a \mid s) 定义了智能体在每个状态下选择动作的概率分布。

  • 折扣因子 γ\gamma 用于量化未来奖励相对于当前奖励的重要性,确保累积奖励的收敛性,并影响智能体的决策是更注重短期还是长期。

例子1

1
2
3
4
5
6
7
8
9
In reinforcement learning, the Q-value is:

A. The immediate reward for an action, a, in state s, plus the discounted value of following the optimal policy after that action

B. The expected value of following policy, π in state, s

C. The maximum discounted reward obtainable from state, s

D. The maximum discounted reward obtainable from state s, following the action

详细解释:

  1. Q值的完整定义
  • Q值(Q-value)表示在状态s下采取动作a的总价值
  • 它包含两部分:即时奖励 + 未来折扣奖励
  1. 选项分析:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
A. 正确 - 完整描述了Q值的两个组成部分:
- 即时奖励:在状态s下执行动作a立即获得的奖励
- 未来折扣奖励:按最优策略继续行动能获得的折扣后的价值

B. 错误 - 这描述的是V(s),即状态价值函数
- 表示遵循策略π从状态s开始的期望价值
- 缺少了具体动作的概念

C. 错误 - 这也是在描述V*(s),即最优状态价值函数
- 只说明了从状态s能获得的最大折扣奖励
- 没有指定具体动作

D. 错误 - 这描述不完整
- 虽然提到了状态和动作
- 但没有包含即时奖励的概念
  1. Q值的数学表达:
1
2
3
4
5
6
Q(s,a) = R(s,a) + γ * max[Q(s',a')]
a'
其中:
- R(s,a):即时奖励
- γ:折扣因子(0到1之间)
- max[Q(s',a')]:未来可能获得的最大折扣奖励
  1. 为什么A是最佳答案:
  • 明确指出了"immediate reward"(即时奖励)
  • 提到了"discounted value"(折扣价值)
  • 强调了"optimal policy"(最优策略)
  • 完整描述了Q值的时序性(当前+未来)

所以选A最准确地定义了强化学习中的Q值概念。

例子2:

在强化学习中,折扣因子(discount factor γ)的作用应选择 C。

详细解释:

  1. 折扣因子 γ 的本质作用:
1
2
3
4
5
- γ ∈ [0, 1] 用来确定未来奖励的现值
- Q(s,a) = R(s,a) + γ * max[Q(s',a')]
^
|
折扣未来奖励
  1. 选项分析:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
A. Directly affects the size of the immediate reward
错误 - γ 不影响即时奖励 R(s,a),只影响未来奖励的权重

B. Controls the speed of policy updates
错误 - 策略更新速度主要由学习率(learning rate)控制,不是由折扣因子控制

C. Determines the present value of future rewards
正确 - γ 的核心作用就是确定未来奖励的现值:
- γ = 0:只考虑即时奖励
- γ = 1:未来奖励与即时奖励同等重要
- 0 < γ < 1:随时间衰减的未来奖励

D. Reduces the number of actions available in each state
错误 - γ 不影响动作空间的大小,只影响奖励的评估
  1. γ 的具体影响:
1
2
3
4
5
例如,对于未来的奖励序列[r1, r2, r3, ...]:
当前价值 = r1 + γr2 + γ²r3 + ...

- γ 接近0:更重视眼前利益
- γ 接近1:更重视长远利益

所以应选择C,因为折扣因子的主要作用是确定未来奖励在当前决策中的权重。

Q-Learning

Off-policy

  1. 可以从历史数据中学习
  2. 支持更多的探索行为
  3. 可以同时学习多个策略
  4. 能重用过去的经验
1
2
3
4
5
# Q-learning (典型的off-policy算法)
Q(s,a) = Q(s,a) + α[R + γ max(Q(s',a')) - Q(s,a)]
^
|
使用最大Q值(最优策略),而不是实际采取的动作的Q值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

Which of the following is true about off-policy learning?

A. It learns the value of the policy being followed
B. It learns the value of the optimal policy irrespective of the agent's actions
C. It requires knowledge of the environment's model
D. It cannot be used with Q-learning


A. 错误 - 这描述的是on-policy learning
- on-policy学习评估的是正在执行的策略
- off-policy可以学习不同于执行策略的目标策略

B. 正确 - 这是off-policy learning的核心特点
- 可以学习最优策略,而不受实际执行动作的限制
- 允许探索性行为的同时学习最优策略

C. 错误 - off-policy learning是model-free的
- 不需要环境模型
- 只需要经验数据(状态、动作、奖励、下一状态)

D. 错误 - Q-learning恰恰是最典型的off-policy算法
- Q-learning可以学习最优策略
- 同时允许使用任意探索策略

例子3:

1
2
3
4
5
6
7
8
9
10
11
A. ✓ Estimate the value of a state
- 正确,这正是V-function的核心功能

B. Estimate the value of an action in a state
- 错误,这是Q-function的功能

C. Determine the next state given an action
- 错误,这是环境动态模型的功能

D. Calculate the reward for a given state
- 错误,这是奖励函数的功能

word2vec

线性模型,隐藏层没有激活函数,可以通过两种方式多词汇预测,continuous BOW和skip-gram,其中CBOW,同一词语在输入层和输出层的表示一致,而skip-gram不一致;需要一种计算效率更高的softmax替代方法,层次化softmax(构建一棵哈夫曼树,每次只需要沿着路径计算一部分类别的概率,减少了计算量),负采样(选择非目标类别作为负样本,不需要对所有类别进行计算);通过减少频繁词汇的采样频率。

actor-critic

combines Q-LearningPolicy Gradients

GAN的两个核心组件:

Generator (生成器) Gθ:

  • 输入:随机噪声z(从标准正态分布采样)
  • 输出:生成的图像x
  • 目标:生成逼真的假图像来欺骗判别器

Discriminator (判别器) Dψ:

  • 输入:图像x(可能是真实的或生成的)
  • 输出:概率值 ∈ (0,1),表示输入图像是真实图像的概率
  • 目标:准确区分真实图像和生成的图像

Generator 想要:

  • 最大化 Discriminator 的判断错误率
  • 生成更逼真的图像

Discriminator 想要:

  • 最小化判断错误率
  • 更准确地区分真假图像

零和博弈(Zero-sum game)特点:

  • 一方的收益等于另一方的损失
  • Generator 的目标是最小化 log(1-D(G(z)))
  • Discriminator 的目标是最大化 log(D(x)) + log(1-D(G(z)))

但是其实,GAN在这里可以zero-sum也可以不,不zero-sum可以produce更好的图片

Autoencoder

理解每种自编码器的命名来记住它们的特点:

  1. Sparse (稀疏) Autoencoder
1
2
3
4
5
名字关键词:稀疏
特点记忆:
- "稀疏" = "大部分是0,少部分非0"
- 就像稀疏矩阵一样,大部分神经元输出为0
- 强制大多数神经元"闭嘴",只让少数神经元说话
  1. Variational (变分) Autoencoder
1
2
3
4
5
6
名字关键词:变分(概率变化)
特点记忆:
- "变分" = "概率分布"
- 不直接学习特征,而是学习分布
- 输出的是概率分布(均值和方差)
- 唯一一个能生成新数据的自编码器(因为学到了分布)
  1. Denoising (去噪) Autoencoder
1
2
3
4
5
名字关键词:去噪
特点记忆:
- "去噪" = "输入加噪声,输出要干净"
- 就像洗衣机,放进脏衣服,要洗出干净衣服
- 输入数据故意加噪声,训练重建干净数据
  1. Contractive (收缩) Autoencoder
1
2
3
4
5
名字关键词:收缩
特点记忆:
- "收缩" = "拉近、不要差太远"
- 像弹簧一样,不让特征变化太大
- 输入稍微变化,特征也应该只变一点点

简单判断方法:

  1. 问到稀疏/压缩 → Sparse
  2. 问到生成/分布 → Variational
  3. 问到噪声/重建 → Denoising
  4. 问到特征稳定性/对输入变化不敏感 → Contractive

实际应用场景:

1
2
3
4
1. Sparse:想要压缩数据、选择重要特征
2. Variational:想要生成新数据、学习数据分布
3. Denoising:数据有噪声、想要更鲁棒的特征
4. Contractive:需要稳定的特征表示、对扰动不敏感

这样记忆,下次遇到相关的题目,看到关键词就能联想到对应的自编码器类型了。

Simple Recurrent Network

image.png