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

Keras构建Actor-Critic双网络:二者是否独立?训练是否相互影响?

from tensorflow.keras.models import Model, load_model
from tensorflow.keras.layers import Input, Dense, Lambda, Add, Conv2D, Flatten
from tensorflow.keras.optimizers import RMSprop

X = Flatten(input_shape=input_shape)(X_input)
X = Dense(512, activation="elu", kernel_initializer='he_uniform')(X)

action = Dense(action_space, activation="softmax", kernel_initializer='he_uniform')(X)
value = Dense(1, kernel_initializer='he_uniform')(X)

Actor = Model(inputs = X_input, outputs = action)
Actor.compile(loss=ppo_loss, optimizer=RMSprop(learning_rate=lr))

Critic = Model(inputs = X_input, outputs = value)
Critic.compile(loss='mse', optimizer=RMSprop(learning_rate=lr))

Actor.fit(...)
Critic.predict(...)
问题解答

Actor网络与Critic网络是否相互独立?

不是完全独立的。这两个模型共享底层的Flatten和Dense(512)特征提取层,只有最后的输出分支各自独立:

  • Actor的输出分支是负责输出动作概率的Dense(action_space, activation="softmax");
  • Critic的输出分支是负责输出状态价值的Dense(1)。

由于两个模型基于同一个输入张量构建,共享层的权重是共用的,任意一方更新共享层权重都会影响另一方的底层特征提取结果。

调用Actor.fit()时,是否会对Critic网络进行部分训练?

调用Actor.fit()只会更新Actor模型包含的所有层的权重:

  • 包括共享的Flatten和Dense(512)层;
  • 以及Actor独有的动作输出分支层。

Critic独有的价值输出分支不在Actor模型结构里,所以这部分不会被训练。但要注意,共享层权重被更新后,Critic后续推理时的底层特征会随之变化,因为它和Actor共用这些层的权重。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:15:42