2016-02-15 15 views
6

私はケラスを使ってディープネッツに取り組んでいます。活性化の「ハード・シグモイド」があります。その数学的定義は何ですか?ハードシグモイドの定義方法

私はシグモイドが何であるか知っています。誰かがQuoraについて同様の質問をしました:https://www.quora.com/What-is-hard-sigmoid-in-artificial-neural-networks-Why-is-it-faster-than-standard-sigmoid-Are-there-any-disadvantages-over-the-standard-sigmoid

どこでも正確な数学的定義を見つけることができませんでしたか?

+0

がMAX(0、分(1、(X + 1)/ 2)であります) –

答えて

0

max(0, min(1, (x + 1)/2)) 
10

KerasはTensorflowとTheanoの両方をサポートしているため、正確な実装はバックエンドごとに異なる場合があります。私はTheanoのみをカバーします。 TheanoバックエンドKerasは順番linearly approximated standard sigmoidにある、T.nnet.hard_sigmoidを使用するための:

slope = tensor.constant(0.2, dtype=out_dtype) 
shift = tensor.constant(0.5, dtype=out_dtype) 
x = (x * slope) + shift 
x = tensor.clip(x, 0, 1) 

それは参考のために、hard sigmoid functionを定義することができるMAX(0、分(1、X * 0.2 + 0.5))

+1

KerasのTensorFlowバックエンドは、手作業で実装されていますが、同じ数学を持っています。 https://github.com/fchollet/keras/blob/master/keras/backend/tensorflow_backend.py#L1487 –

1

、すなわち異なった場所で異なっている。 Courbariaux et al。 2016 [1]が定義されています:σ(X)=クリップ((X + 1)/ 2、0、1)= MAX(0、分(:σは「ハードシグモイド」関数で

1、(X + 1)/ 2))

目的は、ニューラルネットワークのパラメータの確率的二値化における使用のため)、従って01の間になるようにそれを拘束(確率値を提供することである(例えば、重量、活性化、グラジエント)。ハード・シグモイド関数から返された確率p = σ(x)を使用して、パラメータxpの確率で+1、または確率1-p-1に設定します。

[1] https://arxiv.org/abs/1602.02830 - 「二値化ニューラルネットワーク:重み付きトレーニング深いニューラルネットワークとアクティブ化+1に拘束または-1」、マシューCourbariaux、イタイHubara、ダニエルSoudryは、エルは、Yaniv、ヨシュア・ベンジオ、(提出蘭2016年2月9日(V1)に、最後に2016年3月17日改訂(このバージョンは、V3))

関連する問題