超人的なニューラルネットの学習方法を把握しよう!─仙台市が主催した「ディープラーニング基礎講座」イベントレポート
仙台市の主催で「ディープラーニング」の基礎講座イベント開催
仙台市が取り組む先端技術による新事業の創出や先端IT人材の育成・交流によりイノベーションを生み出し、都市体験のアップデートを目指すプロジェクト「SENDAI X-TECH Innovation Project」。今回のテーマは、近年の人工知能の成果を支える先進的でエキサイティングな技術「ディープラーニング」の基礎講座。まずは、参加者同士が3人一組となって、名前、普段何をしている人なのか、参加理由と学びたいこと、最近ハマっていることなどを自己紹介し合いました。
続いては、本イベントの主催者である、仙台市経済局産業振興課の荒木田理さんから、「SENDAI X-TECH Innovation Project」とは、仙台市をフィールドに、IoTやAI、VR/AR、5Gなどの先端技術と産業の掛け合わせによる新事業の創出や、先端IT人材の育成・交流により、イノベーションを生み出し、都市の体験をアップデートしていくことを目指すプロジェクトであること、楽天イーグルスと開催したエンターテックアイデアソンや仙台アプリコンテストなど、これまでの取り組みが紹介されました。
▲仙台市経済局産業振興課 荒木田理さん
1日目午前中は微分・コスト関数などを学習
今回の「ディープラーニング基礎講座」の講師を務めていただいたのは、画像処理、ディープラーニングと科学技術計算が専門のAIコンサルタント、Jakub "Kuba" Kolodziejczykさん。現在は、自身で起業したAI Okinawaの代表、LiLz株式会社のCTO、琉球大学の非常勤講師を務めています。講座は主に、Kubaさんがディープラーニングの数学をもとに解説をし、自身でも実践してみるというハンズオン形式で行われました。
▲AI Okinawa 代表、LiLz株式会社 CTO、琉球大学 非常勤講師 Jakub "Kuba" Kolodziejczykさん
ニューラルネットワークの基礎知識を解説
まず、Kubaさんはニューラルネットワークの基礎知識を解説しました。今回学ぶニューラルネットワークは、大きく区分するとAI(Artificial Intelligence)の中に機械学習(Machine Learning)があり、その機械学習の手法の一つです。
ニューラルネットワークは入力層(input layer)、出力層(output layer)から構成されており、それぞれの層の間にはつながりの強さを示す重み(W)があります。
「AIはきちんと定義されていませんが、機械学習は『データを使っていて、アルゴリズムを改善する仕組み』として定義されています。ディープラーニングは学習データを使っていて、関数のパラメータ(重みとバイアス)を調整していく。インプットのデータをたくさん流せば、理解していい答えを出してくれます」(Kubaさん)
ここからKubaさんは、ホワイトボードに数式を解きながら、ディープラーニングの関数や定義について解説。第一のステップとして、ディープラーニングは微分に基づいていることを説明します。
ニューラルネットワークの学習は予測を正解に近づけるためにコスト関数を使っていて、パラメーター(重みとバイアス)を調整します。また、トレーニングデータに基づいた推測の計算が必要になります。それらを導き出す関数や数式などについて解説が詳しく語られました。
さらに、見本データと出力の数値を比較することで重みやバイアスを修正していく手法「誤差逆伝播法」の基礎的な解説や、複数の出力を使うコスト関数などについて、関数や数式を用いた解説が行われました。
午前中の講義後は、お昼休み。参加者の皆さんはフロアを移動し、TECH PLAY運営が用意したお弁当とお茶でランチをとりながら、コミュニケーションを深めていました。
午後の講義は誤差逆伝播法や行列代数、MNISTなどで学習
午後は、誤差逆伝播法の複雑な誤差関数や変数を用いた学習法について説明されました。スライドの資料に加えて、数式を解き、ホワイトボード2枚使いながら解説を行うKubaさん。数式がどんどん複雑になっていきます。
続いては、手書きの数字画像60,000枚とテスト画像10,000枚を集めた画像データセットを用いての学習法について解説されました。
一日目の最後は、機械学習でもよく使われるライブラリNumPyを使って、Pythonで数値計算を効率的に行うためのプログラミングについて説明された後、実践するという講義が行われました。
一日目の勉強会終了後は懇親会で交流!
一日目の講義終了後は、参加者の皆さんと講師のKubaさん、仙台市役所の荒木田さん・佐藤さん、TECH PLAY 運営事務局・スタッフを交えての懇親会が行われました。
乾杯の音頭は、主催者である仙台市役所の荒木田理さん!
Kubaさんと技術談義をしたり、TECH PLAYイベントスタッフの呼びかけで、技術コミュニティや勉強会・イベントをどんどん開催していこうという話題で盛り上がっていました。
ニューラルネットが普遍的な関数近似になる証明
二日目はニューラルネットワークが任意の関数を近似できることを証明する講義から始まりました。Kubaさんは世の中の問題には、ディープラーニングで解決できるものとできないものがあるが、どんな問題がディープラーニング対象になるか、またなぜそのような問題を解決できるかを証明しました。
また、その後どのような問題が解決できないかも説明。その簡単なアプローチとして、グラフに長方形を並べて、近似値を計算する方法があるとし、その計算方法について解説しました。
ディープラーニングで使われるパラメータを学習
続いては、ニューラルネットワークの予測数値を最適化するために、そのパラメータ(重みとバイアス)の値を求める手法について。目的関数の値を小さくするために、パラメータを繰り返し学習させることで、ニューラルネットワークの最適化を行うことができます。
ニューラルネットワークで実際の数値との計測するときに、重みとしきい値をランダムで入力し、それを最適化するための計測で使うのがコスト関数です。Kubaさんはそのコスト関数を用いて数値を求める数式を、丁寧に解説していきます。
さらにシグモイド関数やソフトマックス関数などの活性化関数と、クロスエントロピーと呼ばれるコスト関数やその数式や数値の求め方などについて、解説が行われました。
次々と展開される数式とKubaさんの解説を真剣に聞き入る参加者の皆さんたち。講義中は積極的に質問をされる方も見られました。
さらに詳しく、隠れ層の活性化関数や重みの初期設定についての最適化について、注意点や関数の使い方などについて説明が行われました。
TensorflowでMNISTを学習
そしていよいよGoogleが開発したComputational Graphライブラリ「TensorFlow(テンソルフロー)」について。TensorFlowは、ニューラルネットワークの構築などに活用されています。このセッションではTensorFlowの入門知識を学んだり、MNISTを学習してみるといったハンズオンなどを行ったりしました。参加者の半数くらいがTensorFlowに触ったことがあるとのことで、楽しみにしていた方も多かったようです。
ニューラルネットワークの最適化に欠かせない回帰の損失関数、学習率、精度検証、畳み込みニューラルネットワークや再起型ニューラルネットワークなどについても解説が続いていきます。
講義の最後は、ニューラルネットワークの学習のコツや画像認識におけるニューラルネットワークの数式などが紹介されました。
二日間の講座を終えての感想
二日間の講座が終了した後は、参加者の皆さんからそれぞれ感想を述べていただきました。
「ディープラーニングで数式が大事な理由が理解できた」
「ディープラーニンのブラックボックスとなっている中身や理論を詳しく説明してもらえた」
「ディープラーニングの仕組み、Pythonを用いた学習方法が理解できた」
「数式の一つ一つはついていけていたが、、さまざまな数式が混ざってくると、非常に難しくなってきた」
「数学があまりわからなくてもイメージを感じることができた」
「非常にためになったセミナーだった。こういう機会はあまりないと思 うので、参加して良かった」
「数学が専門だったので、本格的な理論が展開されて楽しかった」
「仕事上でAI関連業務が増えてきたが、知識と経験があまりなくAPIを使っていたが、これからは今日学んだことをもっと踏み込んだ業務に活かせそう」
最後の挨拶は、主催の仙台市役所の荒木田さんから今後の取り組みや決意を熱く語っていただきました。
「『SENDAI X-TECH Innovation Project』を通じて、これからもエンジニア向けの様々な講座やイベントを開催していきます。仙台市は農業、漁業、医療、介護などの一次産業を、先端IT技術を活用した新しいサービスを生み出していきたい。また、東北大学も医療・創薬の分野からAI分野へ新たな試みを進めています。学生の育成にも注力していきたい」(荒木田さん)
今回参加していただいた方にアンケートをとったところ、講座に対して「大変満足した」が67%、「満足した」が33%と、大変満足度が高い結果となりました。
「ぜひ、参加してみたい」と思った方は、仙台市のグループをチェックしてみてください。