Unityã®æ©æ¢°åŠç¿ã©ã€ãã©ãªãUnity ML-Agentsãã解説
ã²ãŒã ãšã³ãžã³ã®ãUnityãã¯æšä»ãæ©æ¢°åŠç¿ã®åéã§ã泚ç®ããã€ã€ãããŸããä»åã¯ãUnityã®æ©æ¢°åŠç¿ã©ã€ãã©ãªãUnity ML-Agentsãã®ç޹ä»ãšãML-Agentsãçšããæ©æ¢°åŠç¿ã®ãã€ã³ãã解説ããŠãããŸããæšä»ãããŸããæè¡é©æ°ãè¡ãããŠããæ©æ¢°åŠç¿ã®åéã§ããããã®æ©æ¢°åŠç¿ãå®çŸããã©ã€ãã©ãªãUnityã«ã¯åãã£ãŠããŸãã
ä»åã¯ãUnityãçšããæ©æ¢°åŠç¿ãå®éã®ã³ãŒããšå
±ã«è§£èª¬ããŠãããŸãã
æ©æ¢°åŠç¿ãšã¯

çŸåšãAIãäžççã«æ³šç®ãããŠããŸãã
AIãæèŒããç¡äººã§é転ãè¡ãè»ãããã®æ¥ã®å€é£¯ã®ã¬ã·ããææ¡ããŠãããAIæèŒã®å·èµåº«ãªã©ãæ§ã
ãªå Žæã§ãAIããšããèšèãè³ã«ããããšããšæããŸãã
ãã®AIã§ãããäžèšã«AIãšãã£ãŠãæ§ã
ãªãã®ããããããããåŠç¿æ¹æ³ã«ãã£ãæ§è³ªãåŸæåéã®éããªã©ãå€ãååšããŸãã
æ©æ¢°åŠç¿ã®å®çŸ©
ä»å玹ä»ãããæ©æ¢°åŠç¿ããšã¯ããè«å€§ãªæ°ã®ããŒã¿éåãè§£æããç¹åŸŽãæããæªç¥ã®ããŒã¿ã«ã€ããŠã®äºæž¬ãè¡ãããšãã§ããããåŠç¿ããããã®ããæå³ããŸãã
ããAIã«ã€ããŠã®ãã¥ãŒã¹ã§ããã£ãŒãã©ãŒãã³ã°ããšããåèªã«ã€ããŠè©±ããŠããã®ãèããããšã¯ãªãã§ããããã
ããã£ãŒãã©ãŒãã³ã°ãããŸããä»å玹ä»ãããæ©æ¢°åŠç¿ããšããã«ããŽãªã®äžåéã§ããããã£ãŒãã©ãŒãã³ã°ãã¯äººéã®è³ãã¢ãã«ã«ããåŠç¿æ¹æ³ãæ¡çšããŠããç¹ããã®ä»ã®æ©æ¢°åŠç¿ãšã¯ç°ãªãç¹ã§ããããäœããã®æ¹æ³ã§ããŒã¿ãåæãåŠç¿ãè¡ãããšããç¹ã§ã¯å
±éããŠããŸãã
Unityãæ©æ¢°åŠç¿ã§æ³šç®ãããçç±
Unityã¯ããšããšã²ãŒã éçºã®æ¯æŽãè¡ãããã®ãã²ãŒã ãšã³ãžã³ãã§ãã
ã²ãŒã ãšã³ãžã³ãšèããšãäžèŠæ©æ¢°åŠç¿ãšã¯é¢é£æ§ã®ãªããã®ã«æãããããããŸããã
ããããã²ãŒã ãšAIã¯æãã芪å¯ãªé¢ä¿ã«ãããã®ã§ãããAIãäœæããããã®æ©æ¢°åŠç¿ã¯ãã²ãŒã å¶äœãšæ·±ãé¢ããããããã®ãªã®ã§ãã
ãã®ãããAIãšèŠªå¯ãªé¢ä¿ã«ãããã²ãŒã ãã®éçºããŒã«ã§ããUnityããçŸå𿩿¢°åŠç¿ã®ããŒã«ãšããŠã泚ç®ãããŠããããšã¯ãããæå³ã§èªç¶ãªããšã§ãããšãèšããã§ãããã
Unityã®æ©æ¢°åŠç¿ã©ã€ãã©ãª Unity ML-Agentsã®äœ¿ãæ¹ã解説

Unityã§æ©æ¢°åŠç¿ãè¡ãããã«ãä»åã¯æ©æ¢°åŠç¿ã©ã€ãã©ãªãUnity ML-Agentsãã䜿ã£ãŠãããŸããUnity ML-Agentsã¯åŒ·ååŠç¿ã®ã¢ãããŒãã§æ©æ¢°åŠç¿ãè¡ãããšãç¹åŸŽãšãããæ©æ¢°åŠç¿ã©ã€ãã©ãªã§ãã
Unity ML-Agentsã®ç¹åŸŽ
Unity ML-Agentsã¯ã²ãŒã ãšã³ãžã³ã§ããUnityã®æ©æ¢°åŠç¿ã©ã€ãã©ãªã§ãããããã²ãŒã ãšããŠã¯åææ¡ä»¶ã§ãããèŠèŠçã³ã³ãã³ãã®è¡šçŸåãã«åŒ·ã¿ããããŸãã
èŠèŠçã³ã³ãã³ãã«é¢ããæ©æ¢°åŠç¿ãè¡ããããšãã°åŠè¡çãªç ç©¶ã®å Žã«ãããŠãèŠèŠçãªã³ã³ãã³ããšãçŸå®ã®ç©ççè«ãããªããè€éãªè¡åã®ã·ãã¥ã¬ãŒã¿ããå¶äœãã圹ç«ãŠãããšãUnity ML-Agentsã®æ©æ¢°åŠç¿ãå©çšããã°å¯èœãšãªããŸãã
ãã®ä»ã«ããUnity ML-Agentsã¯Python APIãå©çšãã匷ååŠç¿ã®èšç·Žãè¡ãããšãåºæ¥ãããããããããè»ã®èªåé転ãªã©ã®å€§èŠæš¡ãªèšç·Žç°å¢ãå®è£
ããããšãåŸæãšããŠããŸãã
Pythonãšã®é£æºã«ãã匷ååŠç¿ã®èšç·Žãè¡ãããã«äœãããŠãããããUnity ML-Agentsã®å°å
¥ã«ã¯ãPythonã®å°å
¥ãå¿
èŠãšãªããŸãã
å
¬åŒããã¥ã¡ã³ãã«åŸããPythonã®ã€ã³ã¹ããŒã«ãå«ããUnity ML-Agentsã®ã»ããã¢ãããè¡ããŸãããã
Unity ML-Agents ã§å®éã«æ©æ¢°åŠç¿ãè¡ã
Unity ML-Agentsã«ãããŠãæ©æ¢°åŠç¿ã®ãèšç·Žãã®å®è¡ã¯Pythonãæ
ã£ãŠããŸãã
äžæ¹ã§ã匷ååŠç¿ã«ããããå ±é
¬ã®èšå®ãçããšãŒãžã§ã³ãïŒãŠãŒã¶ã®ä»£çãæäœè
ïŒã«é¢ãããã®ã¯ML-AgentsåŽã®ã³ãŒãã§èšå®ãããŸãã
Unity ML-Agentsã®æ©æ¢°åŠç¿ã¯ãæ©æ¢°åŠç¿ã®äžã§ãã匷ååŠç¿ããšåŒã°ããåé¡ã®ãã®ã§ããããã®ã匷ååŠç¿ãã¯ããšãŒãžã§ã³ããç°å¢ããå ±é ¬ãåŸãããã«åãããšã§ãåŠç¿ãè¡ãããã®ã§ãã
ãã®ãã匷ååŠç¿ã«ãããŠã¯ããã©ããã£ãã¢ã¯ã·ã§ã³ããããšå ±é ¬ãæã«å ¥ãã®ãããšããèšå®ã極ããŠå€§äºãªãã®ã«ãªããŸãã
ãã®å ±é ¬ã®èšå®ã¯ãUnity ML-Agentsã«ãããŠã次ã®ãããªã³ãŒãã§èšå®ãããŸãã
if ( /* ä»»æã®æ¡ä»¶ */ ) {
agent.SetReward(1f) // 1fã®å ±é
¬ãç²åŸãã
} else if ( /* ä»»æã®æ¡ä»¶ */ ) {
agent.SetReward(-1f) // ãã€ãã¹1fã®å ±é
¬ãç²åŸãã
}
ãã®ããã«SetReward()ã¡ãœããã䜿çšãããšãåŒæ°ã®å€ã®å ±é
¬ãç²åŸããããšãåºæ¥ãŸããåŒæ°ã®å€ããã€ãã¹ã§ããå Žåãå ±é
¬ã¯æžã£ããã®ãšã¿ãªããããšãŒãžã§ã³ãã¯ãã€ãã¹å ±é
¬ã«ç¹ãããŸã§ã®äžé£ã®åäœãé¿ããããåŠç¿ããŸãã
ãã®å ±é
¬ãã©ãã«ã©ã®ããã«èšå®ãããã«ãã£ãŠã匷ååŠç¿ã®çµæã¯å€§ããå€ãããŸãã
æéçµéã§ãã€ãã¹å ±é ¬ãç²åŸããããã«ãããšããšãŒãžã§ã³ãã¯ããçŠã£ãŠãããã®ããã«è¡åããããã«ãªããŸãããæéçµéã§å ±é ¬ã«é¢ããå€ã®å€åãè¡ããªãå Žåã«ã¯ããšãŒãžã§ã³ãã¯æ¥µããŠæ éã«æéããããŠè¡åããããã«ããªããŸãã
ã·ã³ãã«ãªã³ãŒãã§ãããå ±é ¬ã®èšå®ãUnity ML-Agentsã«ãããæ©æ¢°åŠç¿ïŒåŒ·ååŠç¿ïŒã®ãã¢ãšãªããŸããèªãæ©æ¢°åŠç¿ã®å®è¡ãè¡ããªãããã©ã®ãããªå ±é ¬èšå®ããã£ãšãé©åãªåŠç¿ãçãããæš¡çŽ¢ããŠã¿ãããšã倧åã§ãã
ãŸãšã
ã²ãŒã ãšã³ãžã³ã§ããUnityãæäŸããæ©æ¢°åŠç¿ã©ã€ãã©ãªãUnity ML-Agentsãã®æ©æ¢°åŠç¿ã¯ãã匷ååŠç¿ããšããåé¡ã«å±ãããã®ã§ãããããã¯ãå ±é ¬ã«å¿ããŠæ¯ãèããåŠç¿ãããæ§è³ªããã£ãŠããŸãã
Unity ML-AgentsåŽã®ã³ãŒãã§ãå ±é ¬ã®å€ãã©ã®ããã«å€åããããã倿Žããããšã§ã匷ååŠç¿ã®ãšãŒãžã§ã³ããã©ã®ããã«æ¯ãèãããå€ãããŸããå ±é ¬ã®èšå®ãããŸã調æŽããé©åãªæ©æ¢°åŠç¿ïŒåŒ·ååŠç¿ïŒãè¡ããããæš¡çŽ¢ããŠãããŸãããã
ãã®èšäºã®ããŒã¯ãŒãã«é¢ããå匷äŒã»ã€ãã³ããæ¢ã
TECH PLAYã§ã¯ãITãšã³ãžãã¢åãã®å匷äŒã»ã€ãã³ãæ
å ±ãæäŸããŠããŸãã
èå³ã®ããæ¹ã¯ãã²ãåå ãã ããã













