2015-07-04 18 views
2

對於我正在開發的遊戲,我決定使用神經網絡進行人物威脅分析。當角色在遊戲中發現另一個角色時,他們將使用神經網絡來決定是否參與該角色。它是一個3層前饋網絡。用於威脅分析的神經網絡

輸入:

  • 衛生差(myHP - enemyHP)
  • 水平差異
  • 盟友VS敵人數(numAllies - numEnemies)
  • 布爾變量,表示非常強的存在敵人

我的主要問題是關於輸入和激活功能。我已經實現了使用邏輯功能的網絡。我可以如何最好地使輸入標準化以適應功能?

例如,健康差異範圍可以從1%到100%,其中水平差可以從-40到+40。

回答

0

切換和縮放您的輸入,所以它們都在<0; 1>

如果輸入x<a; b>,你希望它是在<0; 1>,這樣做:

  1. a,所以我們有x - ax現在是非負的。
  2. 除以b - a,所以我們有(x - a)/(b - a)x現在在< 0; 1>。

例子。假設x =您的等級差異輸入。它在< -40; 40>。

  1. 減去-40,我們登陸< 0; 80>。
  2. 除以80,我們登陸< 0; 1>。
+0

非常感謝!我試試看。 – walthamMichael

0

爲什麼不將所有值轉換爲[0; 1]的間隔? 例如找到健康正常化的功能,你正在尋找ab

a * 0.01 + b = 0 
a * 1 + b= 1 

,並提供:a=1/0.99 and b=-0.01/0.99

同爲級差:你正在尋找這樣cd

c * (-40) + d = 0 
c * 40 + d = 1 

等等......

對於每個變量,您的翻譯功能將採用a*x+b的形式,其中ab如上所示。