neural network sample in C# for Microsoft de:code 2018 AI sessions
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
Microsoft de:code 2018 で提供されるサンプル コードです。 次のセッションで説明します。
- AI61 C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう (2018/05/22 16:45 - 17:00)
C# で機械学習の原理であるニューラルネットワークをフルスクラッチで書いてみるサンプル コードと説明です。
ニューラルネットワークを実装してみることで、機械学習の基礎をきちんと理解できます。機械学習を基礎から理解することを目的としています。
機械学習 (Machine Learning) のコアとなる部分です。
C# で少数のニューロンからなる小規模なニューラル ネットワークを作成しています。 ニューロンからの出力には、シグモイド関数を使います。
ソース コード | クラス | 説明 |
---|---|---|
NeuralNetwork.cs | EnumerableExtension | 汎用拡張メソッド |
Math | 数学 | |
Input | 入力 | |
Neuron | ニューロン | |
NeuralNetwork | ニューラル ネットワーク |
上記ニューラル ネットワークを使用したサンプルです。
福井県とその周辺の実際の座標を用いて上記ニューラル ネットワークを訓練します。
教師データは、"locations.csv" で、地名、緯度、経度、福井県内かどうか、からなる 1,088点の座標データです。
訓練後のニューラル ネットワークに、テスト用の座標データを入力し、福井県の中の座標かどうかを判定させています。
表示するものは以下のものです。
- シグモイド関数のグラフ
- 全座標データのプロット
- 訓練前のニューラル ネットワークによる判定結果
- 教師データ
- 教師データで訓練後のニューラル ネットワークによる判定結果
このプログラムは WPF で作られており、MVVM (Model-View-ViewModel) パターンで構成されています。
モデル
ソース コード | クラス | 説明 |
---|---|---|
Model.cs | Coordinate | 地名、緯度、経度を含む座標 |
MathModel | 数学モデル | |
DataModelBase | データ モデルのベース クラス | |
SampleDataModel | 座標データ モデル | |
NeuralNetworkModel | 訓練前のデータ モデル | |
TrainingDataModel | 教師データ モデル | |
MachineLearningModel | 教師データで機械学習後のモデル |
ビューモデル
ソース コード | クラス | 説明 |
---|---|---|
MainWindowViewModel.cs | LineSeriesViewModel | プロット用 |
MathViewModel | シグモイド関数表示用 | |
SampleDataViewModel | 座標データ表示用 | |
NeuralNetworkViewModel | 訓練前のデータ表示用 | |
TrainingDataViewModel | 教師データ表示用 | |
MachineLearningViewModel | 教師データで機械学習後の表示用 | |
MainWindowViewModel | メイン画面全体の ViewModel |
ビュー
ソース コード | クラス | 説明 |
---|---|---|
MainWindow.xaml | MainWindow | メイン画面 |
MainWindow.xaml.cs | MainWindow | メイン画面 |
ソース コード | クラス | 説明 |
---|---|---|
App.xaml | App | アプリケーション |
App.xaml.cs | App | アプリケーション |
ファイル名 | 説明 |
---|---|
locations.csv | 座標データ ファイル (csv) |
ClassDiagram.asta | クラス図 (Astah ファイル) |
AI61.pdf | 説明資料 |
- PredictStockPrice-AI-decode: neural network sample in C# for Microsoft de:code 2018 AI sessions (Microsoft Azure Machine Learning Studio による株価予想プログラム)