issues
search
Suzuki-Yonekura-Lab
/
VAEGAN-motor
VAEGANを用いたモーターの生成。アイシンとの共同研究
0
stars
0
forks
source link
Physics GAN
#3
Open
TamuraMasayuki
opened
1 year ago
TamuraMasayuki
commented
1 year ago
物理モデルを加えて学習を行う
[x] より精度の高い生成モデルに学習させる
[x] トルク解析不能な形状が多いので後処理を加える
[x] バックグラウンドでshellスクリプトを実行できるようにする
[x] イプシロンの意味を理解する
[x] Physics VAEGANの仕組みを米倉先生に聞く
[x] 閾値をもとにdesirableとundesirableに分ける
TamuraMasayuki
commented
1 year ago
desirableとundesirableの分け方
gradient penaltyを使いたいので各ラベルに対して半分ずつにわけたい
そのため実際のデータは使わず、指定したラベルのみを用いる
前提として計算可能な割合が5割を超えている
計算不可能のもすべて含める
JMAGでの計算時間が最もかかるから使えるデータは使っておきたい
5割になるようにルールベースで閾値を決める
まずはトルク(ラベルが1つ)のみで試してみる
ラベルが複数ある場合は各ラベルで一定の閾値を決める
TamuraMasayuki
commented
1 year ago
近似モデルでの学習方法
近似モデルで潜在変数をもとに分類すると、desirableとundesirable少しずつ偏り、形状が崩れていってしまう
一方で1つの形状を計算するのに15秒ほどかかるので厳密モデルを用いるのは現実的ではない
そこで潜在変数ではなく生成形状を用いてまずdescriminatorを学習させる
するとdesirableとundesirableの分類基準は最初にJMAGで計算した値をもとにしてくれる
そのあとdecoderのみを学習させる
結果
decoderの損失が0となってしまう
descriminatorの出力が0となるということなので、decoderの損失関数をbatch_size - ΣDis(Dec(z))としたが、その場合でもdecoderの損失は0となった
つまりdescriminatorの出力が0に近づくというよりかはdecoderが0となるように学習していると考えられる
一方でもともとの損失関数では0以下となるはずであり、損失が最大の状態になっており、decoderの学習が進んでいるようには思えない
損失関数の値が負のとき
?
解決策
潜在変数ではなく座標を保存しておく
問題は座標を保存しておくと、勾配計算ができなくなること
潜在変数でやったところで適当なdecoderの出力をundesirableとおいているので、毎回標準正規分布からサンプリングした値を使ってdecoderが出力した形状をundesirableと定義する
TamuraMasayuki
commented
1 year ago
desirable座標を一時保存して学習
少し形状にがたつきが見られた
計算可能割合は増加したものの、トルクの平均誤差は大きくなった
指定したトルクごとに割合や誤差に小さくないばらつきが見られたので詳細に確認する必要があるかも
イプシロンの値が大きすぎるからトルクの誤差を下げるよりは計算可能割合をあげるような教師データになっているのかもしれない。
形状生成可能割合 0.41→0.42→0.55
トルクの絶対誤差平均 0.0016→0.0015