無限不可能性ドライブ

『ニューラルネットワーク自作入門』に刺激されてExcelVBAでニューラルネットワークを作ってみたものの、やっぱり数学やらなきゃと思い少しずつやってきたのもあって、自分の知識の整理とかそういった感じです。

2019-01-01から1年間の記事一覧

【VBA】文字を隠したいならセルの色に埋め込んじゃえばいいじゃない…

VBA

!!ノンプロ研企画アドベントカレンダー!! こちらは私が所属しているコミュニティ「ノンプログラマーのためのスキルアップ研究会」通称「ノンプロ研」の年末特別企画、ノンプロ研 Advent Calendar 2019 の17日目の記事として投稿しています。 adventar.or…

【VBA編】ニューラルネットワーク(マクロの登録)

マクロの登録 各ボタンにマクロを登録します。 ボタン プロシージャ名 データ読み込み Click_データ読み込み 重みクリア Click_学習状況クリア 学習開始 Click_学習開始 テスト開始 Click_テスト開始 データ読み込み C2セル、C3セルをダブルクリックして、デ…

【VBA編】ニューラルネットワーク(mdlSupervisor)

スーパーバイザ メインの処理となるモジュールです。 '[mdlSupervisor - 標準モジュール] Option Explicit Option Base 1 Dim mcInLayer As classInputLayer Dim mcHLayer1 As classHiddenLayer Dim mcHLayer2 As classHiddenLayer Dim mcOutLayer As classO…

【VBA編】ニューラルネットワーク(classOutputLayer)

出力層クラス 出力層のユニットを管理するクラスです。 '[classOutputLayer - 出力層クラス] Option Explicit Option Base 1 Dim mUnitList() As classUnit 'ユニット格納用リスト Dim mUnitCount As Long '自レイヤーのユニット数 Dim mAct As Long '活性関…

【VBA編】ニューラルネットワーク(classHiddenLayer)

隠れ層 隠れ層のユニットを管理するクラスです。 '[classHiddenLayer - 隠れ層クラス] Option Explicit Option Base 1 Dim mUnitList() As classUnit 'ユニット格納用リスト Dim mUnitCount As Long '自レイヤーのユニット数 Dim mAct As Long '活性関数の種…

【VBA編】ニューラルネットワーク(classInputLayer)

入力層のユニット管理 入力層のユニットを管理するためのクラスです。 '[classInputLayer - 入力層のユニットを管理するためのクラス] Option Explicit Option Base 1 Dim mInUnitList() As classInputUnit 'ユニット格納用リスト Dim mInUnitCount As Long …

【VBA編】ニューラルネットワーク(classInputUnit, classUnit)

入力層のユニットクラス 入力層のみ実装が異なります。 '[classInputUnit - 入力層のユニットクラス] Option Explicit Dim mX As Double '入力データをセットする '[引数] <- inputData : Double / 入力データ Public Property Let X(ByRef aInputData As Do…

【VBA編】ニューラルネットワーク(ML)

演算用モジュール 活性化関数や損失関数を実装します。 '[ML - マシンラーニング演算用モジュール] Option Explicit Option Base 1 '活性化関数 ReLU '[引数] <- aU : Double / ユニットの u '[戻り値] -> actReLU : Double / ReLU適用後の値 Public Functio…

【VBA編】ニューラルネットワーク(ws_Main, G, mdlReadData)

ファイル指定処理 読み込むデータのCSVファイルを指定するコードです。 「ws_Main」シートに記述します。 '[ws_Main - シートオブジェクト] Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim filePa…

【VBA編】ニューラルネットワーク(メイン画面)

メイン画面 celaeno42.hatenablog.com メイン画面の数式 数式はこのように入っています。 C列の値はとりあえずこんな感じで。 モジュールとシート 必要な標準モジュール、クラスモジュールは以下の通りです。【標準モジュール】 オブジェクト名 用途 G 定数…

【VBA編】ニューラルネットワーク(全コード)

全コード掲載 なかなか更新の時間がとれず、ずいぶんと放置してきてしまい、未完に終わってしまうのも何なのでいくつかに記事を分けて全コードを載せていきます。 概要とデータ celaeno42.hatenablog.com メイン画面 celaeno42.hatenablog.com ws_Main, G, m…

【VBA】あみだくじを作ってみる【再帰】

Excel VBA であみだくじを作ろう! コロ子さんのブログに触発されて以前 Excel VBA で作ったあみだくじを記事にしてみました。コロ子さんとはアプローチの仕方が違いますが、実現にはいろいろな方法がありますね。 koroko.hatenablog.com シートの作成 まず…

ExcelVBAで強化学習(Q学習)を実装して迷路を解いてみる

※※ Qiitaの記事へのリンクと駄文です ※※ 強化学習ことはじめ 強化学習の勉強を始めたものの何の話をしているのかいまいちよくわからなくなっていたところで、『つくりながら学ぶ!深層強化学習 -PyTorchによる実践プログラミング-』を手に取ってみたところ、…

勾配降下法を、いま一つ腹落ちしていない過去の自分にくどくどと説明してみる。

勾配降下法 このブログでは VBAでニューラルネットワークをフルスクラッチする連載をしてますが、数式編でやった通りパラメータ更新の式は手順を追って導出できたのですが、その理屈的なところがどうもしっくりいってなかったので、そんな自分でもわかるレベ…

【VBA編】(順伝播)動作確認(2)

順伝播の実行 前回は順伝播の動作確認で必要な部分のコードを追加しました。 今回は、実際にデータを読み込んで順伝播の処理を行い、結果を表示させてみます。 celaeno42.hatenablog.com データの準備 使用するデータは以前の記事で準備しています。celaeno4…

【VBA編】(順伝播)動作確認(1)

動作確認 前回までで順伝播については入力から出力まで計算できるようになりました。celaeno42.hatenablog.comここまででいったん正しく動作するかを確認してみましょう。 ただ、その前にコードをいくつか追加しておきます。 それぞれ「----追加----」の部分…

【VBA】文字列をいい感じに改行してみる

VBA

面白そうなチャレンジだったのでやってみました。ExcelのLENとかLENBって、全角も半角もおんなじだから、漢字とひらがなカタカナと半角英数が混じった文字をだいたい見た目同じあたりで改行するってコード書くのかなりめんどいのな。諦めた。— fishb (@dampe…

【VBA】画像ファイルを(意図的に)壊して不慮の事故を防ぐ あるいは暗号化してみる(2)

VBA

前回は1つのファイルだけを書き換えましたが、今回はフォルダ内の画像を一括変換する処理を書いていきましょう。celaeno42.hatenablog.comなお、ここでは「ファイルを壊す」ことを(説明の都合上)「暗号化」と表現することにします。 まずはフォルダの選択…

【VBA】画像ファイルを(意図的に)壊して不慮の事故を防ぐ あるいは暗号化してみる(1)

VBA

俺の嫁フォルダががが… あ!ちょっ…そのフォルダは開けちゃだめ!!なんてことがあったりなかったりするかもしれませんが、そういう場合に慌てないようにあまり見られたくない画像ファイルなんかは暗号化とかしておくとそういった不慮の事故が防げるかもしれ…

【VBA編】(順伝播)出力層の作成

出力層 前回は隠れ層のクラスを作成しました。今回は出力層用のクラスを作成します。なお、今回のコードは隠れ層とほとんど同じです。 celaeno42.hatenablog.com 出力層の初期化 隠れ層同様、初期化処理を作ります。コードは「classOutputLayer」に記述しま…