人工知能・機械学習の研究、AI班の活動に関する記事です。
AI班の記録(2017/03/06)
今回は3人が発表しました。また、商学部1年の方が1名見学に来てくれました!
U-Net: Convolutional Networks for Biomedical Image Segmentationの紹介
論文はこちら
Image-to-ImageのCNNを改良したU-Netの提案論文。生物分野ではデータが小さいことが良くあり、これを克服することを目的として提案されました。現在は様々な分野に適用されています。
TDAの概要と適用・有用性
TDA(Topological Data Analysis・位相的データ解析)の概要と、位相幾何学によってデータ解析や機械学習がどのような恩恵を受けるのかを紹介しました。
Depth Creates No Bad Local Minimaの紹介
論文はこちら
ニューラルネットワークの損失関数の非凸性を生む「深さ」と「非線形性」のうち、「深さ」に注目した論文です。線形の活性化関数で結ばれた層をどれだけ深くしても、全ての局所解は大域最適解と一致することが説明されています。
AI班の紹介
慶応義塾大学のコンピュータサークルKCSのAI班では人工知能の理論や実装を勉強をしています。4月からは初心者向けAI講習会も行います!新入部員募集中です!
AI班のTwitterはこちら
他のAI班の記録は「Tagged: AI班日誌」
人工知能に関する記事は「Tagged: 人工知能」
AI班の記録(2017/03/01)
今回はGANの論文と、PRMLの10章が紹介されました。
Image-to-Image Translation with Conditional Adversarial Networksの紹介
論文はこちら
話題のGAN(Generative Adversarial Nets、敵対的生成ネットワーク)の複数の手法を比較し、
手法を組合せたり改良したりすることによって精度の向上を試みた論文です。
PRML10.1〜10.4 大域的変分推論法の紹介
PRMLの10章は変分法を用いた近似推論である変分近似法について書かれています。
変文近似法のうち、変分推論法(変分ベイズ)と呼ばれる手法の中の大域的変分推論法の紹介をしました。
AI班の紹介
慶応義塾大学のコンピュータサークルKCSのAI班では人工知能の理論や実装を勉強をしています。4月からは初心者向けAI講習会も行います!新入部員募集中です!
AI班のTwitterはこちら
他のAI班の記録は「Tagged: AI班日誌」
人工知能に関する記事は「Tagged: 人工知能」
AI班の記録(2017/02/22)
入試期間が明け、春季休暇初めてのAI班の活動でした。
AI班の主な活動の1つは各部員が読んだ論文の紹介です。
今回は2つの論文が紹介されました。
“Why Should I Trust You?” Explaining the Predictions of Any Classifierの紹介
機械学習のモデルの解釈可能な根拠を提示する手法「LIME」の論文の紹介です。元の論文はこちら。
一般的に機械学習は「ブラックボックス」と言われるように分類等の基準が人間には分からないため、学習データについてうまく学習されているように見えても期待していない的はずれな基準が用いられている可能性があります(これをData Leakageという)。
「LIME」はData Leakageなどを防ぐために以下のように人間が解釈できる形で基準を表すための仕組みです。
- 文書分類問題で、分類の基準としている単語
- 画像物体認識問題で、ある物体であると決める根拠とする画像範囲
Show and Tell: A Neural Image Caption Generatorの紹介
画像を入力すると、画像の内容を説明してくれるという手法の紹介です。
AI班の紹介
KCSは慶應義塾大学で唯一人工知能(情報論的学習)の理論や実装を勉強しているサークルです。4月からは初心者向けAI講習会も行います!新入部員募集中です!
AI班のTwitterはこちら
他のAI班の記録は「Tagged: AI班日誌」
人工知能に関する記事は「Tagged: 人工知能」
DeeperBind: Enhancing Prediction of Sequence Specificities of DNA Binding Proteins他(AI班の記録)
2017/1/18のAI班の記録です。
発表したもの:
・DeeperBind: Enhancing Prediction of Sequence Specificities of DNA Binding Proteins
LSTMとCNNを用いて特定の転写因子との親和性(affinity)が高いDNA領域を発見する論文を紹介。
DeepBindよりも高い精度を出せるらしい。名前が安直。
・強化学習ベースの言語モデル(独自)
環境と強化学習するエージェント2台がある系において、エージェントが状態と語の関係性を獲得する過程をモデル化し、実装して考察したことについて発表。(時間があったら後日詳細について書きます)
AI班のきろく(2017/1/11)
記録を残しておいたほうがいいということになったのでAI班の活動記録.
2017/1/13にやったこと
トピックモデル
トピックモデルの話.
ユニグラムモデル,混合ユニグラムモデル,潜在的ディリクレ配分法,の流れで説明.膨大な文書データから潜在的トピックを抽出するためのモデル.pLSAの話もした.混合ユニグラムモデルと潜在的ディリクレ配分法のグラフィカルモデルの違いなど.
Detection of phase transition via convolutional neural network
CNNで二次元イジング模型の相転移に関する情報を抽出したいという感じの論文.理論的な解析とCNNによって得られる情報がかなり一致するのでよい.らしい.
宣伝
KCSは慶應義塾大学で唯一人工知能(情報論的学習)の理論や実装を勉強しているサークルです.興味のある方は是非声をかけてください.
AI合宿やってます(2日目)
AI合宿やってます(現在進行系)
フレーム独立GMM-based mappingによる声質変換
こんにちは。1年のSannkoです。AI班です。
初投稿になります。
宜しくお願いします。
UMUさんの記事にもありますが、AI班は声質変換の活動をしています。
まだどのような手法で声質変換をしていくかは検討中ですが、既存の手法を試してみようと思います。
戸田さんの論文の2章に書いてある、提案手法ではない古い手法をやってみます。
この手法ではフレームごとにGMMでソースとターゲットの同時分布を推定して、そこから条件付き確率やら周辺確率が出せるのでそれを使って変換を行います。
フレーム間の関係は全く考えられていないので、最近の手法と比べるとかなり古典的な手法ですね。
https://pdfs.semanticscholar.org/d419/ceb2753232373fd4ab9534b371e017cd9dc1.pdf
データはこのサイトのものを使わせてもらいました。
ありがたいですね、こういう研究室は。
8.00モーラ/秒の25文のデータを使っています。
http://www.it.ice.uec.ac.jp/SRV-DB/
女性1から男性への変換をやってみたいと思います。
変換元の女性の声はこれ
ターゲットはこの男性です。
この文章のデータは訓練データからは除いてあります。
変換を行った結果がこれです。
基本周波数はそのままなので、声が高くなっているのがわかります。
ただ、声質は男性のものに近くなっている気がしますね(定性的)。
基本周波数の変換についてはフィルタとの関係などを考えてきちんと検討すべきですが、(正直よく分からないので)今回はとりあえず単純に切片0の回帰曲線でモデル化しました。
単純ですが、画像をみるとわかる通り、それなりに妥当です(定性的2)。
(追記)貼ってから気づいたんですが、この画像は切片を0にする前のやつでした。下のデータに使ったモデルはちゃんと切片0になっています。
このモデルを使って基本周波数も変換をした結果がこれです。
ピッチを適当に扱ったのでノイズが増えてしまったような気がします(定性的3)。
しかしかなりターゲットの声に近づいたと思います(定性的4)。
正直、この単純な手法でここまで変換できたので驚いています。
今後は戸田さんの提案手法など、もう少し高度な手法を試してみたいですね。
音声分析合成システムWORLDをPythonに移植した
最近,音声の声質変換を行うために,Pythonで使えるライブラリを探していました.matlab上で使える便利な音声分析合成ソフトとして「WORLD」が存在しますが,これをPython上で使おうとすると少々めんどくさいということがありました.そこで,科学研究用のスタンダードなPython開発環境Anacondaがあれば簡単にWORLDを使えるように,matlabのコードを参考にPythonへ完全移植を行っています.とりあえず,基本的な分析→合成までの部分の移植が完了したので,移植したコードがまともに動くかどうかの検証も含めて記事にしてみました.
まずは,元の音声データです.この音声データをもとに,パラメータを抽出(分析)し,さらに再合成することで音声データが再構築されます.再構築する際に,パラメータを統計的に変化させて別人の声を生成する方法が,「統計的声質変換」です.
次に,正規版(matlab)の変換結果です.
最後に,移植版(Python)の変換結果です.
聞いてみると,正規版と移植版の違いが分かると思いますが,これは,matlab版で使用されている一部の関数が,pythonでは存在しないために,なるべく同じような挙動をするようにコードを書いていますが,やや違いがでてきてしまうためです.
なお,この移植版を公開していいかわからないため,公開するかどうかは後日決定します.
今後,移植を完成させつつ,声質変換についての記事も書いていこうと思います.BYE!
–ここから残念なお話–
まず,matlabからpythonに移植するとき,配列のインデックスの書き方の違いで,とても混乱した.matlabでは,配列のはじめは1から始まるが,Pythonでは一般的な言語と同じく0である.これだけなら,数値を1ずらすだけでいいのだが(実際にはそれだけでもかなりのストレスである.),配列から一部の列を取り出す際,例えば,[0,1,2,3,4,5]という配列から[2,3,4]を取り出すとき,取り出しの記述はPythonでは2:5(2番目から5番目の意)となり,Matlabでは3:5(3番目から5番目の意)とかく(Pythonでは,一番最後のインデックスは無視される.)これが非常に頭を混乱させる要因となっており,一番混乱したときは,matlabのコードを実行したときの図を紙に書いて,紙に書かれた内容をPythonコードで書くという所業をしてしまった.
さらに,面倒くさいのが,matlabで定義されている関数を,pythonで移植する場合,matlabの関数となるべく近い挙動をするpythonコードを書く必要がある.pythonで完全一致する関数があればいいのだが(うれしいことに,汎用的なものは共通化されているようだ),すべてきれいに一致するとは限らないので,なるべく同じ計算結果となるようにコードを書く必要があった.
一部は,面倒くさいので放置しているが,聞こえ上は似ているものができたので,まずは良しとすることにした.
人工知能講習会(機械学習講習会)やることまとめ
目標
MNISTデータベースの学習
内容目次
全4回,予備1回
1.Python入門
1.1 環境構築(Anaconda + Mako + PyOpenCL,Device for OpenCL)
1.2 Dive Into Python
2.数値計算入門
2.1 NUMPY+SCIPY入門
3 .ニューラルネットワーク入門
3 .1 機械学習の基礎知識
3 .2 ニューラルネットワークの基礎知識
3.3 NNPropagator入門
4.NNPropagatorを使ったニューラルネットワークの学習
4.1 多層パーセプトロンによる関数近似
4.2 MNIST学習
前提条件
手続き型プログラミング言語を少し習得していること.
※手続き型プログラミング言語:C,C++,Python,Java,C#,Javascript…など.
内容
1.Python入門
人工知能プログラミングで必要となる,Pythonについて入門します.
1.1 環境構築(Anaconda + Mako + PyOpenCL,Device for OpenCL)
Pythonでプログラミングできる環境を作ります.KCS製のニューラルネットワークライブラリ「NNPropagator」を動作させるための環境となっています.
1.2 Python入門
Pythonを知らない人向けに,一通り簡単にPythonを学びます.
2.数値計算入門
数値計算を知らない人向けに,一通り簡単にPythonを学びます
2.1 NUMPY+SCIPY入門
Pythonには,優秀な数値計算用のライブラリが多数存在します.そのうち,汎用性が高く習得が容易な「Numpy」について一通り簡単に学びます.Scipyは必要に応じて学びます.
3 .ニューラルネットワーク入門
機械学習でも最先端で活用されている,ニューラルネットワークについて学びます.
3 .1 機械学習の基礎知識
機械学習とは何かについて簡単に学びます.
3 .2 ニューラルネットワークの基礎知識
ニューラルネットワークとは何かについて簡単に学びます.確率と線形代数の知識が多少必要ですが,わからなければ教えます.
3.3 NNPropagator入門
KCS独自開発のライブラリNNPropagatorについて学びます.独自開発のライブラリと言っても,ニューラルネットワークの実装を補助するものです.ライブラリもナイーブに書いており,実装を理解するのも簡単です.
4.NNPropagatorを使ったニューラルネットワークの学習
NNPropagatorを用いて,こちら側で用意したデータベースを解析して頂きます.
今回の講習会では,2系統(関数近似系/MNIST)用意してあります.また,確認用に自分でデータベースを作り,評価します.
4.1 多層パーセプトロンによる関数近似
こちらで用意した学習用のデータ群をNNPropagatorを用いて学習・評価します.
4.2 MNIST学習(数字文字認識)
MNISTデータ群をNNPropagatorを用いて学習・評価します.
MNISTとは,下の画像の様な数字の画像と教師データのデータベースです.
(画像を与えられた時に何の数値であるか推定する人工知能を作ります.)
教科書
1~3.2インターネット上または書籍で適当なものを引用し,活用します.
3.3~ 独自の教科書を用います.