Rim
Rim
「Rim」は初めて開発した人工知能です。画像認識を主な目的としており、精度は実験結果の欄で掲載されています。最初の人工知能であるため、精度は最新のものと比べてはかなり低くなっていますが、改良をすることで向上させていく予定です。
Information
言語:python
ファイル数:4(python)+画像管理フォルダ
ファイル名 | 行数
- main.py | 320
ネットワーク全体の処理を管理します。 記憶のデータはこちらのファイルで定義されます。そのため、記憶の追加・改善はmain.pyで行われます。画像のデータはこの関数で変換されます。入力データを元に出力を取得し、記憶との参照を行い、最終的な結果を決定します。
- make.py | 50
setting.pyから情報を受け取りネットワークの生成を行います。
- say.py | 30
print関数をまとめたファイルです。システムに関しての出力や、Rimの言葉などで分けられています。また、Input関数も定義されています。
- setting.py | 40
ネットワークの情報(層数や深さ・重みやバイアスの最大値・記憶関連など) を定義します。また、print関数などで用いる色変更の変数を定義してあります。
特徴
- 記憶を保持・改善する
- 一般的な誤差修正を必要としない
仕組み
学習データはGoogleのライブラリを用いて大量に取得することができます。また、有名なデータセットであるmnistを用いた実験結果を掲載しています。
ネットワークの生成
main.pyがmake.pyのnetwork関数を呼び出します。make.pyではsetting.pyで定義されているネットワークの構造をもとにネットワークを生成します。生成したネットワークを返り値としてmain.pyへ送信し、networkという変数に代入します。
わかりづらいですね。つまり↓
司令部が設計部からの設計書を生成部へ送ってネットワークを生成してもらいます。
※おそらくファイル名まで記述するともっとわからなくなるので、省略していきます。
データの入力と変換
まずはデータをRimに送ります。画像そのままを入力して構いません。
ex : 〇〇/image/apple.jpg
Rimでは入力されたデータを自動的に認識可能な大きさに変換します。
変換後、ニューラルネットワークの入力層にデータを代入します。
具体的には、入力された画像をリサイズした後にimgファイルに保存します。
また、入力前の画像はimageファイルに保存しておくことができます。事前学習ではこのファイルに保存しておくことで大量の画像を読み込むことが可能です。
ネットワーク内の計算
入力層から順番に出力層まで値を送信していきます。計算についてはこちらの記事をご参考にしてください。
Rimの仕組みでは一般的な誤差修正を用いないことが特徴です。なぜ誤差の修正の必要がないかは簡単に言うと、入力したデータと出力したデータには関連性があるためです。この考えが成り立つと仮定すると大きな計算処理を省略することができます。
記憶の参照
記憶のデータは配列(辞書型)で、「Name」「Data」の2つのプロパティがあります。名前通りですが、Nameでは記憶の名前が、Dataにはデータの数値が保存されています。
プロパティを簡単に説明すると、
appleという変数に「美味しさ」「大きさ」の2つの情報を保存したいとき、辞書型を使って、「美味しさ」に『美味しい』を代入し、「大きさ」に15cmを代入することでappleの値を二つにすることができます。
よって、各記憶のデータに「名前」「データ」の2つの情報を保存します。
記憶の参照では出力層と各記憶のデータの近さを計算し、もっとも近いデータを出力結果として決定します。
※記憶データがない場合は計算なしに記憶の追加を行います。
ですが、近いデータがない場合は新たな記憶として保存します。
この近さはmemory_infoのプロパティであるdistance_limitで定義されています。
記憶の追加
記憶の追加は記憶がないときや近い記憶が見つからなかったときに呼び出されます。追加の際には名前を入力してもらいNameプロパティに保存し、出力層のデータをDataプロパティとして保存します。
記憶の改善
もしもすでに記憶にあるデータを判別できなかった際には同じ名前で記憶を追加してください。そうするとRimが記憶にあったことを思い出し、記憶の平均化を行います。また、近さの基準もそれに合わせて拡張されます。
まとめ
Rimの仕組み(処理の流れ)を簡単にまとめると
- ネットワークの生成
- データを受け取る
- 計算をし、記憶と照らし合わせる
- 記憶の改善の必要があれば行う
Rimのサイト化
RimがWebサイト上で動作できるようにプログラムをJavaScriptに変換しています。
サイトでの特徴としては
(続く…)
記事を読んでいただきありがとうございます。
おすすめの記事はこちら↓