neural network sample in C# for Microsoft de:code 2018 AI sessions
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
NeuralNetwork.Core
NeuralNetworkSample.WPF
images
.gitattributes
.gitignore
AI61.pdf
CSharpNeuralNetworkSample-AI-decode.sln
ClassDiagram.asta
LICENSE
README.md

README.md

CSharpNeuralNetworkSample-AI-decode

neural network sample in C# for Microsoft de:code 2018 AI sessions

C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう

概要:

Microsoft de:code 2018 で提供されるサンプル コードです。 次のセッションで説明します。

C# で機械学習の原理であるニューラルネットワークをフルスクラッチで書いてみるサンプル コードと説明です。

ニューラルネットワークを実装してみることで、機械学習の基礎をきちんと理解できます。機械学習を基礎から理解することを目的としています。

プロジェクト:

NeuralNetwork.Core

機械学習 (Machine Learning) のコアとなる部分です。

C# で少数のニューロンからなる小規模なニューラル ネットワークを作成しています。 ニューロンからの出力には、シグモイド関数を使います。

名前空間 (namespace) - NeuralNetwork.Core
ソース コード クラス 説明
NeuralNetwork.cs EnumerableExtension 汎用拡張メソッド
Math 数学
Input 入力
Neuron ニューロン
NeuralNetwork ニューラル ネットワーク

NeuralNetworkSample.WPF

上記ニューラル ネットワークを使用したサンプルです。

福井県とその周辺の実際の座標を用いて上記ニューラル ネットワークを訓練します。

教師データは、"locations.csv" で、地名、緯度、経度、福井県内かどうか、からなる 1,088点の座標データです。

訓練後のニューラル ネットワークに、テスト用の座標データを入力し、福井県の中の座標かどうかを判定させています。

表示するものは以下のものです。

  • シグモイド関数のグラフ
  • 全座標データのプロット
  • 訓練前のニューラル ネットワークによる判定結果
  • 教師データ
  • 教師データで訓練後のニューラル ネットワークによる判定結果

このプログラムは WPF で作られており、MVVM (Model-View-ViewModel) パターンで構成されています。

名前空間 (namespace) - NeuralNetworkSample.WPF.Models

モデル

ソース コード クラス 説明
Model.cs Coordinate 地名、緯度、経度を含む座標
MathModel 数学モデル
DataModelBase データ モデルのベース クラス
SampleDataModel 座標データ モデル
NeuralNetworkModel 訓練前のデータ モデル
TrainingDataModel 教師データ モデル
MachineLearningModel 教師データで機械学習後のモデル
名前空間 (namespace) - NeuralNetworkSample.WPF.ViewModels

ビューモデル

ソース コード クラス 説明
MainWindowViewModel.cs LineSeriesViewModel プロット用
MathViewModel シグモイド関数表示用
SampleDataViewModel 座標データ表示用
NeuralNetworkViewModel 訓練前のデータ表示用
TrainingDataViewModel 教師データ表示用
MachineLearningViewModel 教師データで機械学習後の表示用
MainWindowViewModel メイン画面全体の ViewModel
名前空間 (namespace) - NeuralNetworkSample.WPF.View

ビュー

ソース コード クラス 説明
MainWindow.xaml MainWindow メイン画面
MainWindow.xaml.cs MainWindow メイン画面
名前空間 (namespace) - NeuralNetworkSample.WPF
ソース コード クラス 説明
App.xaml App アプリケーション
App.xaml.cs App アプリケーション
データ ファイルその他
ファイル名 説明
locations.csv 座標データ ファイル (csv)
ClassDiagram.asta クラス図 (Astah ファイル)
AI61.pdf 説明資料
クラス図

クラス図

説明資料:

C# でニューラルネットワークをスクラッチで書いて�機械学習の原理を理解しよう 機械学習 (Machine Learning) とは まず 人工知能 (Artificial Intelligence) とは 機械学習とは 機械学習の種類 ディープラーニング (深層学習: Deep Learning) ディープ ラーニング 人工知能と機械学習 ニューラル ネットワークとは 神経細胞のネットワーク ニューラル ネットワーク 個々のニューロン シグモイド関数 ニューラル ネットワークによる分類 今回作成するニューラル ネットワーク 今回のニューラル ネットワークの訓練 Demo C# によるニューロンの実装 C# によるニューラル ネットワークの実装 C# によるニューラル ネットワークの実装 (続き) C# によるニューラル ネットワークの実装 (続き) C# によるニューラル ネットワークの実装 (続き) 実行結果 (シグモイド関数) 実行結果 (座標データと訓練前) 実行結果 (教師データと訓練後) 訓練前の重みの値 訓練後の重みの値


関連資料: