danの暇人ブログ

こんにちはぁぁぁぁぁ。主に趣味や雑談などを投稿していまス。最近はVtuberにハマっていまス。Youtube配信もしておるんや。



【AI剣持計画:08】学習の手法について


投稿日:2020年8月15日3:46
更新日:2021年5月22日22:55

えーこんにちは。

今もなお学習を続けております。

まだまだパラメータや学習タイミングの調整中です。

学習モデルの保存の忘れやグラボがフリーズするなどのアクシデントもありましたが、なんやかんや続けております。

このページを見てくださっている方やTwitterで進捗を挙げると反応してくださるかたがいると少なからずモチベーションになります。

この研究がどんな結果になるかはわかりませんが(おそらく失敗する確率が高いかな...)応援よろしくお願いします。

で、今回はどんな技術を使って剣持刀也を生成しているか解説していきたいと思います。

私自身完璧にこの手法を理解しているわけではないのですが、おそらくおおよそ正しいことを説明すると思います。

「へ~、AIの技術にこんなのがあるんだ~」程度に見て頂けると幸いです。

GAN

本研究では「GAN(generative adversarial network:敵対的生成ネットワーク)」という技術をベースにAIを作成しています。

じゃあGANってなんなのさって言いますと、簡単に言えばより本物に近い偽物を作るAIと、その偽物が本物かどうか鑑定するAIによって構成された技術みたいな感じですかね。

偽物を作るAIを生成モデルと呼ぶことにします。また、鑑定するAIを識別モデルと呼ぶことにします。

この二つのモデルの流れは、まず生成モデルはランダムなノイズから偽物の作成を行います。

一方、識別モデルはデータが本物か偽物か判断を行います。

また、この時識別モデルは本物のデータをあらかじめ少しずつ学習し、その学習した知識から本物と偽物を判断します。

生成モデルはより本物に近づけようと学習し、識別モデルはより本物をしっかり判別できるように学習を行います。

イメージとしては下図のような感じになります。

GANイメージ図

  • 生成モデルはより本物に近いものを生成する
  • 識別モデルはより偽物か判断できるようにする

  • このように2つのモデルは逆の目的で学習を行います。

    ゆえに敵対的学習(advarsarial training)と呼ばれています。

    そしてこの手法は二つのAIを逆の方向に学習させるので、片方のモデルだけが学習スピードが速くなったりするとお互いのバランスが崩れてしまい結果として全体の学習が失敗します。

    お互いの学習レベルを均衡に保つことが大切です。

    ですが均衡に保つような学習ができることは保証されていないので長時間学習を行ったり、各種最適パラメータを自分で探っていくしかありません。

    ここがGANの難しいところです。

    論文になっているGANが生成した画像は本物の画像に近いものが生成されていることが多いですが、あれは何百万枚もの画像を学習させたり、上手くいった結果のみを発表していることが多いです。

    このGAN技術はネットで調べると私のように実際に試してみている人がたくさんいます。

    MNIST(手書き数字)のような単純な画像は割と成功している場合が多いですが、私が行っているような人物の画像など複雑な情報を持っている画像とかの場合は上手く生成できていないことがほとんどです。

    一応私も論文など色々情報を集めて、このパラメータやこのテクニックが有効だというのを取り入れていますが中々満足いく結果となりません...。

    まぁぶっちゃけ学習に使う画像が少ないってのもありますけどね笑!

    とまぁすごい雑にですが今回の手法について軽く述べましたがなんとなくイメージできたでしょうか?

    本当はもっと色々細かいことがあったり、実は面白い特性があるのですがここでは割愛します。

    もっと知りたい場合はGANで検索してみたり、コメントしていただければより細かく解説していきたいと思います。

    DCGAN

    私が使っている研究の土台はGANですが、画像生成に畳み込みを利用した深層畳み込みGAN(deep convolutional GAN:DCGAN)を本当は使っています。

    違いは生成モデルが画像生成時に少し技術が追加されただけで、基本的なイメージは先ほどの図と全く同じです。


    ...というわけでですね、今この内容を書いているのが深夜なのですが、寝て起きてから学習の進捗をまたTwitterにでも上げようかと思います。

    今、AIの学習を20万回行っているのですが結構時間がかかります。数時間レベルです。

    この時間がかかるので中々進捗を報告できないんですよね...。

    とまぁこんな話は置いておいて、今回はいったんここまでにします。

    では、次の結果にご期待ください。

    ・カテゴリ プログラミング
    ・タグ python剣持刀也AI剣持刀也開発企画

    (0)

    コメントを投稿する


    最新記事




    月別アーカイブ


    プロフィール
    このサイトを運営している「dan」と申します。
    私の趣味や雑談等を主に投稿しています。


    管理人
    更新情報&つぶやき

    プライバシーポリシー