2015-07-04 16 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如上所示。