Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refine model #7

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open

refine model #7

wants to merge 25 commits into from

Conversation

yasuohayashibara
Copy link
Member

@yasuohayashibara yasuohayashibara commented Feb 12, 2024

モデルをGankenKun_webotsに近づける.
#4 に寸法がある.

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 12, 2024

以下の寸法に変更
image

0.24mで0.7rad (40deg)傾けたとして,

0.24 cos(0.7) = 0.154m
0.25 - 0.24 sin(0.7) = 0.066m

IsaacSoccer.zip

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 12, 2024

チューニングしたパラメータで訓練をした.

IsaacGym (736エピソード)
IMAGE

IsaacGym (974エピソード, 3時間半)
IMAGE

IsaacGym (1229エピソード, 4時間半)
IMAGE

IsaacGym (1531エピソード, 5時間強)
IMAGE

IsaacGym (2716エピソード, 10時間)
IMAGE

IsaacGym (3288エピソード, 10時間)
IMAGE

IsaacGym (4881エピソード, 16時間)
IMAGE

@yasuohayashibara
Copy link
Member Author

モデルを精緻化したが,あまり良い動きをしていない.
モデルに問題があるかもしれないので,チェックする.

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 14, 2024

9c3a093 における挙動
rolloutは4098

IsaacGym (573エピソード, 3時間半)
IMAGE

IsaacGym (1548エピソード, 9時間弱)
IMAGE

Screenshot 2024-02-15 05:44:23

Screenshot 2024-02-15 05:44:50

Screenshot 2024-02-15 05:45:04

Screenshot 2024-02-15 05:45:23

Screenshot 2024-02-15 05:45:42

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 15, 2024

IsaacGym (1480エピソード, 10時間程度, 4096並列)

・転倒すると移動する機能を追加
 → ただし移動中にボールやロボットに衝突するのでそれが問題
・角度をsin(the), cos(the)とした.

IMAGE

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 18, 2024

IsaacGym(2440steps, 16時間程度)

IMAGE

webots

IMAGE

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 19, 2024

1エピーソード100ステップだと途中で試合を放棄する様子も見られたので,環境のリセット1000エピーソードにして学習させた様子
学習は1エピソード100ステップの学習を行った後に実施した.
はじめから1000ステップにすると学習に長い時間が必要になるため.
ただし,ゴールしたりボールが場外に出たときにはリセットをしている.

IMAGE

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 19, 2024

ボールの寄りが遅いため,ヒューマノイドの動きをある程度模擬する処理を入れた.

追加した部分は以下の通り

1)連続しない行動(前後,左右,回転)は移動距離を少なく(0~1倍)する.
2)連続しない行動(前後,左右,回転)は向きに大きなガウスノイズを加える.

IsaacGymSoccer/env.py

Lines 327 to 330 in 5ac85da

actions0[same_action_rows,:2] += 0.1 * torch.randn((torch.sum(same_action_rows),2), device=self.args.sim_device) * self.walking_period
actions0[~same_action_rows,:2] *= 1.0 * torch.rand((torch.sum(~same_action_rows),2), device=self.args.sim_device)
actions0[same_action_rows,3] += 0.1 * torch.randn(torch.sum(same_action_rows), device=self.args.sim_device) * self.walking_period
actions0[~same_action_rows,3] += 1.0 * torch.randn(torch.sum(~same_action_rows), device=self.args.sim_device) * self.walking_period

素直にボールによるようになったように見える.
また守備位置も改善したように感じる.

webots (1150エピソード)
IMAGE

■ 傾向
1)3体でゴール前に布陣して,敵のボールを奪うとそのままカウンタアタックをするような戦いをしている.
  守りを重視した戦略になっていると思うが,共に同じ戦略であるため得点できていない.
2)ボールが自ゴール周辺に来ないとボールにアプローチしない.
  もしくは,キックオフでボールが近くにあれば反応する.
3)ドリブル中に前に出るとそのまま待機するような状態になる.
  後ろに味方ロボットがいる場合は敵を遮る役割を果たすため,必ずしも悪くはない.
4)軌道修正に時間がかかることがあるが,的確にドリブルして敵のゴールにボールを入れる行動を選択している.
5)無駄なキックはしているが,戦略上有意義なキックはあまり見られない.

@yasuohayashibara
Copy link
Member Author

ちなみに,webots上での実行はこちらのブランチを使用している.

https://github.com/citbrains/GankenKun_webots/tree/import_isaacgym

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 19, 2024

webots (2177エピソード)
IMAGE

・self-playで切り替わる直前のモデルを使用したが,攻めには強いが守りは弱い.
 おそらく守る必要が無いので,守りが手薄になっている.

webots (1150エピソード)
IMAGE

・傾向としては,上の1150と同じ.3体でゴール前で守ってカウンタを繰り返す.

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 20, 2024

self-playで学習済みモデルを相手に反映させる周期を従来の200エピソードから1エピソードにした

webots (1G(100step/ep)+1G(1000step/ep)+241ep)

IMAGE

・ボールの寄りはあまり良くないが,攻守ともに強くなっている気がする.

webots (1G(100step/ep)+1G(1000step/ep)+942ep)

IMAGE

webots (1G(100step/ep)+1G(1000step/ep)+1976ep)

IMAGE

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 21, 2024

ボールに近づく,ボールの位置に対する報酬を加えた挙動

こちらを参考にさせていただいた
https://github.com/PKU-MARL/Multi-Agent-Transformer/blob/be3ff49c8264d454c1fe2c41582aa2bfc98498c8/mat/envs/football/encode/rew_encode.py#L73-L105

webots (1061ep)
IMAGE

横を通り過ぎるので,歩幅を減らした挙動
前後 0.5m/s -> 0.3m/s, 左右 0.5m/s -> 0.2m/s
はじめからこのパラメータだと得点するまで非常に長い時間が必要であることは確認済み

webots (1061ep+1000ep)
IMAGE

・ボールを前に蹴り出す挙動が見られるようになる.
・ボールの位置によってはロボットが近寄っていかない.
 → ゴール前のボールのことが多く,時間切れを狙ったほうが良い結果になるかもしれない.

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 21, 2024

webots (1061ep+2440ep)
IMAGE

IsaacGym (1061ep+2440ep)
IMAGE

・長時間訓練したが,IsaacGym側の動きを見てもあまり強くなっていない.
・むしろ1000epのほうが良い動きに見える.
・ep毎の訓練データを比較したほうが良いかも.

Screenshot 2024-02-22 07:13:17
Screenshot 2024-02-22 07:13:45
Screenshot 2024-02-22 07:13:55
Screenshot 2024-02-22 07:14:09
Screenshot 2024-02-22 07:14:21
Screenshot 2024-02-22 07:14:33
Screenshot 2024-02-22 07:14:46

@yasuohayashibara
Copy link
Member Author

ここ数日検証してきたプログラムにバグがあったのでデータを取り直し中
角度に乱数を加えていたが,数日前の修正で間違えてキックに加えていた.
あと,ボールを相手ゴールに近づけると正の報酬を与えているが,条件によっては負になることがあることが分かったので,それを修正した.

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 22, 2024

上記の処置をした後の挙動

IsaacGym (1080ep, 6時間半)
IMAGE

webots (1080ep, 6時間半)
IMAGE

・典型的なチームプレイは見られないが,ドリブルで確実に得点することができている.
・ボールが周辺に行くとあまり近寄れない.おそらく100step/epのためだと思われる.

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 23, 2024

はじめにロボットを配置する位置を広くした.
(-4.0, -2.5) ~ (1.0, 2.5)

・ボールに絡むロボットが増えた気がする.
・相手にゴールされたときに負の報酬を与えることが学習にとって良くない効果を与えている気がする.
 → 相手にゴールされる度に進んでいた学習が後戻りする.

IMAGE

Screenshot 2024-02-23 09:24:43

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 23, 2024

ゴールされたときのペナルティをなくすために,以下をコメントアウトして実行

rew_goal = torch.where((extended_ball_pos[:,0] < -4.5) & (torch.abs(extended_ball_pos[:,1]) < 1.3), torch.ones_like(rew_goal)*(-goal_reward), rew_goal)

371ep (2時間強)
IMAGE

・役割分担はあまりできていないが,ボール周辺に集まってボールを取り合っている様子が見られる.
・1台だけで攻める従来の動きから良い動きになっていると思われる.

Screenshot 2024-02-23 12:33:58

@yasuohayashibara
Copy link
Member Author

out_of_fieldの値の変化が顕著であるが,一度学習して場外に出ないようになっていても,ゴールをし始めると再度場外に出始める.
ゴールの報酬が大きすぎるので,それまでに獲得した行動から,たまたまゴールしていたときの挙動に置き換わっているのではないかと考える.
ボールの位置に対して報酬を与えるようにしたので,もっとゴールの報酬は下げたほうが良いかもしれない.

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 23, 2024

1609ep
IMAGE

・スムーズに攻めている.
・1台だけではなく複数台で攻めており,こぼれ球を拾う位置にいることもある.
・パスはしていない.
・ペナルティを無くしたのでゴール前で守備する様子は見られない.

Screenshot 2024-02-23 19:32:32

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 24, 2024

変更したパラメータで学習した結果を示す.

・チームプレイが見られるようになった.
 複数台で壁を作ってボールを止める
 前に進めない状況で後ろのロボットにボールを転がす

2080ep
IMAGE

報酬
image

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 24, 2024

学習の結果

・ある程度協調の様子が見られる.
・500Msteps(8時間)程度で学習は収束している.

2440ep (15時間強の学習時間)
IMAGE

Webots 2440ep
IMAGE

・ポジショニングなどは再現できている.
・ボールへの寄り方が横からになっていることが多い.
・正面で受けることが少ない.

報酬
Screenshot 2024-02-24 14:09:53

@yasuohayashibara
Copy link
Member Author

視野を含めた学習
・学習が収束しなくなった.
・プログラムに問題があるおそれがあるので調査する.

2440ep (15時間強の学習時間)
IMAGE

Screenshot 2024-02-25 10:53:31

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 27, 2024

上記のパラメータで学習した結果

・視野に制限をかけてもそれなりに試合を行うようになった.

IMAGE

IMAGE

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 27, 2024

13時間ほどwebotsで学習した結果

・上下しながらも徐々に報酬が上昇している.

image

IMAGE

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Feb 29, 2024

視野の報酬を追加して学習した結果
詳しくはこちらのブランチのソースコードを御覧ください.

・順調に学習が進みました.
・1600epの学習済みモデルを使用して,webotsで転移学習しています.

image

IMAGE

webotsでの学習の様子
・まだ訓練が少ないせいかも知れないが,あまり順調に報酬が上がっていない.

image

@桑野君
現在RTX4090でwebotsでの学習を行っていますので,よかったら見てください.

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Mar 5, 2024

2日間ちょっと学習した後の様子
・強くなっているように見えない.

IMAGE

学習の様子
SJDOJL~V

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Mar 5, 2024

#9 を利用してIsaac Gym で比較を行った様子
100試合を同時に行っています.

・訓練ステップ数が多いモデルの方が勝利する傾向にあることが確認できた.

  0 200 400 600 800 1000 1200 1400 1600
0 0 – 0 0 – 0 0 – 1 0 – 33 0 – 60 0 – 64 0 – 70 0 – 65 0 – 60
200 0 – 0 1 – 1 0 – 1 1 – 11 0 – 29 1 – 40 1 – 36 1 – 38 0 – 36
400 1 – 0 1 – 0 0 – 2 1 – 11 3 – 13 2 – 18 0 – 24 0 – 17 0 – 26
600 33 – 0 11 – 1 11 – 1 7 – 8 5 – 13 2 – 12 6 – 8 2 – 13 4 – 18
800 60 – 0 29 – 0 13 – 3 13 – 5 6 – 4 4 – 8 2 – 10 4 – 9 5 – 5
1000 64 – 0 40 – 1 18 – 2 12 – 2 8 – 4 7 – 8 5 – 4 3 – 4 2 – 9
1200 70 – 0 36 – 1 24 – 0 8 – 6 10 – 2 4 – 5 6 – 5 3 – 5 1 – 8
1400 65 – 0 38 – 1 17 – 0 13 – 2 9 – 4 4 – 3 5 – 3 3 – 6 2 – 1
1600 60 – 0 36 – 0 26 – 0 18 – 4 5 – 5 9 – 2 8 – 1 1 – 2 8 – 4

検証は以下を使用
https://github.com/citbrains/GankenKun_webots/tree/test_model

Isaac Gymで学習した結果をwebotsで比較した様子
20試合で検証しています.
ただし,こちらは1エピーソード300ステップとした.

・Isaac Gymと同様の結果となった.

※表は以下で取り直しているので削除しました.

webotsで転移学習させてwebotsで比較した様子
同じく20試合で検証

・学習により競技能力が低下している.
・何か問題があるおそれがある.

※間違いがあったので訂正

  0 800 1600
0   3 – 0 3 – 0
800 0 – 3   0 – 0
1600 0 – 3 0 – 0  

@yasuohayashibara
Copy link
Member Author

はじめから強い敵同士で学習させると良くないかもしれないと考えて,相手を未学習のモデルにして学習をさせてみた.
上昇する様子も見られるが,やはり学習後の動きが良くない.
状態と報酬を見直しているが,特に問題は見られない.

IMAGE

学習の様子
S7CU7E~X

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Mar 7, 2024

1試合(100step)ごとに学習しているのが影響していることが懸念されたため,1試合300step以下として,5,000step分データを集めて学習した.
報酬の上昇が見られるようになった.
ただし,ゴール前で速やかにシュートできていないので,改善が必要かもしれない.
ちなみに,IsaacGymの場合,204,800step分集めて学習している.

IMAGE

報酬
S664R2~R

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Mar 9, 2024

訓練の結果を示す
やや上昇は見られるが大きな差は見られない.

STSWWM~J

  0 40 80 120 158
0   3 – 2 0 – 2 4 – 1 2 – 5
40 2 – 3   1 – 4 4 – 2 3 – 1
80 2 – 0 4 – 1   5 – 2 2 – 4
120 1 – 4 2 – 4 2 – 5   4 – 1
158 5 – 2 1 – 2 4 – 2 1 – 4  

240308_run51.zip

@yasuohayashibara
Copy link
Member Author

webots側の議論になっているので,以後以下で議論する.
citbrains/GankenKun_webots#86

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Mar 11, 2024

取り直しました.
webotでの学習結果の20試合分です.
傾向は変わりませんが,120epが圧倒的に良いというわけではない結果になっています.
もう少し試合数を多くする必要があるかもしれません.

一般的に横方向に見るという話がありましたので,転置しています.

  0 30 60 90 120 150
0 2 – 1 0 – 5 2 – 1 2 – 3 2 – 3 2 – 2
30 5 – 0 0 – 3 5 – 3 2 – 2 3 – 3 4 – 2
60 1 – 2 3 – 5 4 – 0 2 – 2 1 – 2 2 – 3
90 3 – 2 2 – 2 2 – 2 3 – 4 2 – 6 1 – 2
120 3 – 2 3 – 3 2 – 1 6 – 2 0 – 2 1 – 5
150 2 – 2 2 – 4 3 – 2 2 – 1 5 – 1 3 – 1

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Mar 12, 2024

Isaac Gymのモデルをwebots(20試合)で比較した様子

  0 200 400 600 800 1000 1200 1400 1600
0 0 – 0                
200 0 – 0 0 – 0              
400 0 – 0 0 – 0 0 – 0            
600 7 – 0 3 – 2 4 – 0 2 – 0          
800 11 – 0 9 – 0 2 – 0 3 – 1 0 – 0        
1000 10 – 0 6 – 0 3 – 0 1 – 0 0 – 0 0 – 1      
1200 11 – 0 5 – 0 5 – 0 2 – 1 0 – 3 1 – 0 0 – 2    
1400 12 – 0 5 – 0 4 – 0 1 – 0 2 – 0 1 – 1 3 – 1 2 – 1  
1600 19 – 0 10 – 0 4 – 0 0 – 0 3 – 0 0 – 1 3 – 2 3 – 4 2 – 4

@yasuohayashibara
Copy link
Member Author

yasuohayashibara commented Mar 13, 2024

Isaac Gymのモデルをwebotsで比較した様子(50試合)

  0 200 400 600 800 1000 1200 1400 1600
0 0 – 0                
200 2 – 0 0 – 0              
400 0 – 0 1 – 0 0 – 0            
600 21 – 0 10 – 2 5 – 0 3 – 0          
800 28 – 0 15 – 0 5 – 0 3 – 2 1 – 3        
1000 29 – 0 17 – 0 7 – 3 3 – 0 3 – 2 0 – 3      
1200 28 – 0 14 – 0 10 – 1 6 – 1 0 – 6 2 – 2 0 – 4    
1400 37 – 0 17 – 0 15 – 0 8 – 0 3 – 2 4 – 3 5 – 2 3 – 2  
1600 36 – 0 22 – 0 9 – 0 3 – 0 6 – 0 4 – 2 5 – 3 5 – 6 3 – 4

webotsで転移学習したモデルをwebotsで比較した様子(50試合)

・学習の効果があまり見られない結果となった.
・同じモデル(60ep)で9-1という結果になっており,力が拮抗しているので偶然の要素が大きいかも知れない.
・試しに開始位置をある程度固定して試合を行わせてみようかと考えている.
 → 向きなどをある程度制限して比較してみたが,それほど変わりない(120, 150が明確に強いわけではない)結果となった.

  0 30 60 90 120 150
0 5 – 3          
30 7 – 1 3 – 3        
60 3 – 5 6 – 7 9 – 1      
90 5 – 6 3 – 4 6 – 6 10 – 6    
120 4 – 6 7 – 9 3 – 4 11 – 6 7 – 5  
150 3 – 2 5 – 8 8 – 8 3 – 3 8 – 4 3 – 6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant