2017-08-03 6 views
0

私は補強学習の完全な初心者です。 keras-rlエージェントの出力レイヤーのアクティブ化機能の選択について質問があります。 keras-rl(https://github.com/matthiasplappert/keras-rl/tree/master/examples)が提供するすべての例では、出力レイヤーで線形活性化関数を選択します。どうしてこれなの?異なる活性化機能を使用すると、どのような効果が期待できますか?たとえば、離散アクションスペースが5のOpenAI環境で作業する場合、エージェントの出力レイヤーでsoftmaxを使用することを検討する必要がありますか? ありがとうございます。keras-rlの例は、常に出力層で線形活性化を選択するのはなぜですか?

答えて

0

keras-rlの一部のエージェントでは、エージェントが個別のアクションスペース(dqn、ddqnなど)を使用していても、アクティベーション機能が使用されます。しかし、例えば、CEMは個別のアクションスペース(これは期待するもの)のためにsoftmaxアクティベーション機能を使用します。

linear dqnとddqnのアクティブ化機能の背後にある理由は、エージェントの一部である探索ポリシーです。我々は探査例として、それらの両方のために使用するポリシーおよび方法select_actionのクラスを考えると、私たちは次のように表示されます。

すべてのアクションのための意思決定プロセスで
class BoltzmannQPolicy(Policy): 
def __init__(self, tau=1., clip=(-500., 500.)): 
    super(BoltzmannQPolicy, self).__init__() 
    self.tau = tau 
    self.clip = clip 

def select_action(self, q_values): 
    assert q_values.ndim == 1 
    q_values = q_values.astype('float64') 
    nb_actions = q_values.shape[0] 

    exp_values = np.exp(np.clip(q_values/self.tau, self.clip[0], self.clip[1])) 
    probs = exp_values/np.sum(exp_values) 
    action = np.random.choice(range(nb_actions), p=probs) 
    return action 

、のlinear活性化関数の出力最後にdense層は[0,1]の範囲にボルツマン探査方針に従って変換され、特定のアクションに関する決定はボルツマン探査に従って行われる。そのため、softmaxは出力レイヤーで使用されません。この偉大な説明のための多くの https://medium.com/emergent-future/simple-reinforcement-learning-with-tensorflow-part-7-action-selection-strategies-for-exploration-d3a97b7cceaf

+0

ありがとう:

あなたは別の探査戦略と、ここで彼らの比較についての詳細を読むことができます。それは非常に役立ちます! –

関連する問題