3年生課題概要
自律系工学研究室では,3年生後期に配属となった学生に3年生ゼミとしていくつかの課題をこなしてもらいます.このページは2016年11月から2017年3月までに行われた3年生ゼミの課題について紹介します.
卒業論文や修士論文のための研究基礎として,以下の技術を3年生のうちに習得してもらいます.配属後の約半年間での課題で講義や実験などと並行して行うので大変ではありますが,先輩方が親切に教えてくれながらの演習なので,皆さんの技術は明らかに向上します!
課題内容
課題のテーマは以下の通りです.詳細についても徐々にアップ予定です.
第1回 | 環境構築とベジェ曲線の描画 |
第2回 | ニューラルネットワークの誤差逆伝搬学習 |
第3回 | 光源追従ロボットー自律くん(規則ベース) |
第4回 | 光源追従ロボットー自律くん(ニューラルネットワークの進化) |
第5回 | 光源追従ロボットー自律くん(強化学習) |
第6回 | Convolution Neural Network (CNN)による画像分類 |
第9回 | ディープラーニングに関する自由課題(以下にそれぞれの自由課題について説明します) |
松田 啓佑
||| タイトル
CVAE-GANを用いた顔画像変換
||| 概要
Deep Learningによる画像生成は近年で急速に発展してきており、人間でも本物と見分けがつかないような画像がコンピュータによって生成できるようになってきています。
今回はそのような画像生成を行うことのできるVariational Autoencoder(VAE)と、Generative Adversarial Network(GAN)という2つの方法を組み合わせた手法を使って顔画像の変換(老化、イケメン化)を行いました。
||| 詳細
顔画像の変換を行う手法として、今回はVAEの発展形であるConditional VAE(CVAE)と、GANを組み合わせたCVAE-GANを用いました。
VAEはencoderとdecoderという2つのニューラルネットワークから構成されており、encoderは与えられた顔画像を一旦、その顔画像の特徴(色白、鼻が高い、目が大きい等)を表す低次元のベクトルに落とし込み(エンコード)、decoderはそのベクトルから元の与えられた画像を再構成(デコード)します。この一連のタスクをこちらが用意した大量の画像で行い、訓練することで画像生成ができるようになります
CVAEは、基本はVAEと同じ構成ですが、エンコードとデコードの際にこちらが用意したラベル(老化なら年齢、イケメン化ならイケメンか否かを表すラベル)を表すベクトルを新たに加えて訓練を行います。そのラベルを表すベクトルの値を変えてデコードすることにより変換された顔画像の生成を行うことができます。
VAEは優れた画像生成の手法のひとつではあるのですが、生成される画像がぼやけてしまう、という欠点があり、この欠点はCVAEでも同じように存在しています。そこで、この欠点を解決するためにCVAEとGANを組み合わせたCVAE-GANという手法を用いることにしました。
GANは画像を生成するgeneratorと、生成された画像がgeneratorにより生成されたものか否かを判別するdiscriminatorという2つのニューラルネットワークから構成されていて、generatorはdiscriminatorを騙せるようにリアルな画像を生成すること、discriminatorは騙されないように判別できることを目標に学習していきます。この2つの敵対したネットワークが相互に学習していくことにより、リアルな画像が生成できるようになります。
CVAE-GANでは、GANの2つのネットーワークのうちgeneratorの役割をCVAEが担っていて、これによりぼやけない画像が生成ができるようになりました。
下の2つのgif画像は実際に顔画像を変換した結果です。顔画像は輪郭を切り取ったものを与えます。老化の方は訓練データセットに外国人の顔画像を使い、イケメン化の方は日本人の顔画像を使いました。再構成された画像はそれぞれに使ったデータセットの特徴をもったものとなっていることが見て取れます。
||| 感想
Deep Learningの中でも画像生成のものは扱いが難しく、大変なことも多くありました。
しかし、生成系は結果が見た目にもわかりやすく、インパクトがあったので楽しく課題に取り組むことができ、またいろいろな経験を積むことができてよかったと思っています。
泉 一成
||| タイトル
リングプルを開けるときの音によるコーラの種類識別
||| 概要
2016年にdeepmindが発表したwavenetというモデルを用いて音の分類に挑戦しました。音の分類では音を画像に変換した後に分類することが多いのですが、wavenetでは元のwav形式ファイルをそのまま用いて分類します。今回は人の声の分類、コーラの開封音の分類に挑戦しました。
||| 詳細
wavenetは基本的には時系列データを用いた畳み込みニューラルネットワークです。一定の間隔で入力データを畳み込みその結果を蓄積したものを全結合層に入力し、分類を行います。
フーリエ変換などを用いて画像に変換してから分類を行うよりも情報落ちが少なく、また、時系列データを用いるため人の声の分類では画像を用いるものよりも20%以上高い精度を出すことができ、96%程度の精度で分類が可能でした。また、コーラの開封音でも70%近い精度で分類することが可能でした。
||| 感想
一ヶ月以上この課題に取り組んでいましたが、途中精度が上がらず行き詰まってしまったり、論文の内容が難しくなかなかプログラムを理解できないことなど様々な大変なことがありましたが、それのおかげで自分で考えやり遂げる力が育まれ課題に取り組む前よりも様々な面で力が身についたと思います。
中西 啓太
||| タイトル
wavenetを用いた音声生成と音声変換
||| 概要
2016年にdeepmindが発表したwavenetを用いて音声の生成と変換に挑みました。wavenetはあらゆる音を学習し生成することができるネットワークであり実験では犬の鳴き声、人の声、ベートーベンの楽曲、VOCALOIDの楽曲などを学習させました。また音を生成する際にネットワークに入力する値をすり替えることで音声を変換できるか試みます。
||| 詳細
wavenetの基本は畳み込みです。学習時、ネットワークでは学習データの音声を時間方向に畳み込んでいきます。この時、畳み込むことができる時間の量のことを受容野と呼びます。受容野が大きいほど前の音の情報を覚えていられます。wavenetではこの受容野を大きくするために畳み込みを何個か飛ばしに行ったり、畳み込みの層を重ねたりしています。そうして畳み込んでいったネットワークの最終的な出力は次の瞬間の音の確率分布です。この音を正しく予測できるようにネットワークの重みを更新していきます。
学習したネットワークを用いて音声の生成をします。生成する際は一番最初にランダムな音をネットワークに入れ、次の音を予測させます。後は予測した音も含めて再びネットワークに入れて更に次の音を予測させこれを繰り返して音を生成します。また変換する際は学習済みネットワークに学習データとは全く別人の音声を入力しどのような出力になるかを検証しました。
実験結果(音声生成):
実験結果(音声変換):
<学習データ例>
<ネットワークへの入力>
<ネットワークの出力>
||| 感想
残念ながら音の変換はうまく行きませんでした。また単純に生成した人の音声も言葉を喋ってはいないことから音声処理の難しさを痛感しました。しかしフーリエ変換等を用いず生の音声データからでも様々な音声の特徴を捕らえることができるということがわかり、より一層音声処理について興味が湧きました。
平田 健二
||| タイトル
DQNによるテトリスAIの学習
||| 概要
DQNと呼ばれる学習アルゴリズムを用いてテトリスをプレイするAIの作成、および学習効率の改善を行いました。DQNとはDeep Learningと強化学習(Q学習)を組み合わせた学習アルゴリズムであり、一部のビデオゲームにおいては人間以上のスコアを獲得することができます。DQNではAIにゲームのルールを教える必要はありません。AIはゲーム画面とスコアのみから、どのように操作すれば高得点が得られるのかを判断し学習することができます。
||| 詳細
ⅰ)テトリスAIの作成
テトリスは13個の行動がありますが、AIは行動価値関数によって行動を決定します。行動価値関数はゲーム画面を入力、各行動価値を出力とするニューラルネットワークによって近似されます。AIが行動するたびに、実際に得られた報酬をもとにネットワークを更新することで学習は進行します。ルールを教えていないため学習初期では1列も消せませんが、プレイ回数を重ねるうちにピースの置き方を学習していき、プレイ回数が40000回ほどになるとほとんどミスをしないほどに成長しました。
ⅱ)学習効率の改善
テトリスAIの学習には数十時間ほどかかります。これはそこまで長時間とは言えませんが、今回は扱う問題の性質上、入力画像、ネットワーク構成ともにかなり小規模なものであったためであり、問題の規模が大きくなると学習にかかる時間は膨大なものとなります。そこでDQNの学習効率の改善を行います。今までは出現するピースはランダムに選択していましたが、DQNを用いてテトリスAIがピンチになるようなピースを選択するような学習、テトリスAIがチャンスとなるようなピースを選択するような学習を行います。つまりテトリスをプレイするテトリスAIと、出現するピースを選択する環境を共進化させることでテトリスAIの学習効率を改善させます。実験の結果、AIがピンチになるような環境と共進化させた場合、AIがチャンスになるような環境と共進化させた場合や普通に学習させた場合と比較して学習時間が短縮される傾向が見られました。
||| 感想
DQNにおいて学習効率を改善することを目標としてプレイヤーと環境の共進化を行いました。実験結果から学習時間に対するある程度の傾向は見てとれましたが、試行回数が少ないため共進化が学習効率を改善させるということをはっきり示すことはできませんでした。しかし、Deep Learning、さらにDQNというものを学び、扱い方を知ることができたのは今後の研究の役に立つと思います。
山嵜 聖也
企業との共同研究に関わる課題のため,公開できません.