
ALBERTでは、ビジネスに即したデータ活用スキルやデータサイエンティスト育成のノウハウ・講座実施の実績を活かして、学生が実践的なデータ活用方法や分析手法等を学べる機会を提供しています。
今回、その取り組みの一環として、滋賀大学と連携して特別講義を実施しました。1日6時間、3日間で合計18時間の集中講義形式で行い、学部生や修士の方々合わせて約20名が参加しました。
講義の様子とアジェンダ


演習では、みなさん黙々とプログラミングに取り組んでおり、時折講師やスタッフに質問をしたり、学生同士で確認し合ったりして試行錯誤する姿が見られました。
———————-
今回行われた講義内容
# 1日目 ニューラルネットワークとはなにか### 座学
#### はじめに
– ニューラルネットワークとその歴史
– ニューラルネットワークにできること
– ニューラルネットワークの学習
#### 微分のおさらい
– なぜ微分? (ニューラルネットワークにおける微分の役割 とか?)
– 一変数関数の微分 (関数の極限・連続性、微分可能性 など)
– 多変数関数の微分 (連鎖律、写像、勾配 など)
#### 計算グラフ
– 式を計算グラフで表現する
– 順伝播・逆伝播
– 自動微分
### 演習
#### プログラミングの準備
– 基本的なPythonの使い方
– 関数・クラスの作り方
#### 計算グラフと自動微分の実装
– 変数、関数をそれぞれクラスとして実装する
– 変数は値と grad, backward メソッドを持つ
– 関数は forward メソッドと backward メソッドを持つ
– 変数は自分を生成した関数ノードを、関数ノードは自分の入力になった変数を覚えておく
– Backward が呼ばれると後ろから前に勾配を伝播させていく
# 2日目 計算グラフと自動微分の実装 (続)
### 演習 (1日目の演習の続き)
#### 関数近似をおこなう
– 損失関数の概念の導入
– 三次関数を二次関数で近似するとどうなるか (表現力不足)
– 二次関数を三次関数で近似するとどうなるか (過学習)
### 座学
#### はじめに
– 知的タスクのモデル化、関数近似
– 関数を構造とパラメタに分解する
– 勾配法によるパラメタ推定
#### 一層ニューラルネットワーク
– 一層ニューラルネットワーク
– Softmax関数
– W, bの説明
– Linear Layer
#### 多層ニューラルネットワーク
– 多層ニューラルネットワーク
– 活性化関数の種類とその使い分け
– 多層ニューラルネットワークの表現力
#### ニューラルネットワークの訓練
– 損失関数
– 損失関数の設計の重要性
– 最急降下法
– 確率的勾配降下法
– 誤差逆伝播法
– 過学習と汎化
### 演習
#### 手計算してみる
– W, b, xの勾配の計算
– 活性化関数の導関数の算出
#### 多層ニューラルネットワークの実装とMNISTの識別
– 線形変換や活性化関数を関数ノードとして実装する
– 実装した関数ノードを用いてニューラルネットワークを作成する
– MNISTを用いたニューラルネットワークの訓練
# 3日目 ニューラルネットワークの実装 (続)
### 演習
#### 解説
– 実装例の解説
———————-
講義を終えて
講義後に参加者に実施したアンケートでは、全体の内容の理解度が「まあまあ理解できた」が47%、「あまり理解できなかった」が47%と同数という結果になりました。やはり多層ニューラルネットワークの実装の工程はみなさん理解が大変という方が多かったようです。フリーコメントでは、
「今までニューラルネットワークはライブラリーを使っていたので、理論は知っていてもその中身がブラックボックスであったので、今回の講義は非常に為になりました。」
「概念や考え方はよく分かりました。アルゴリズムやプログラミングの実装が難しかった。」
「まさかパッケージを使わず実装できるとは思わなかったので実装できてよかった。」
「こうやってできてるんだ、と分かっただけでも収穫になりました。不明な点は今後も自分で学習していこうと思います。」
といったご意見がありました。

今回の講義では、ALBERTと滋賀大学の双方、そして参加いただいた学生の方々にとっても有意義な時間にすることができました。ALBERTでは今後も、急拡大するビジネスでのデータ活用需要に向けたデータサイエンティスト育成が急務という社会的な課題に、実用的な育成ノウハウの蓄積を活かし、インターンシップの受け入れや大学での講座実施等、積極的な産学連携を推進していきます。
