自作の意味AIを作る-part12
少しタイトルを分かりやすく変更しました
手を付け始めてから何年か経ち、自分の書いたソースコードも読めなくなりつつある(笑)ので思考整理です。(経過報告的な)
コンセプト
AIのコンセプトは”知識はつながりで出来ている“、”何と繋がっているかがその知識のユニークさを表す“、”共通項を括りだすことで新たな思考を生み出す“です。
人は”今考えていることと、今見たものが繋がったとき“に、アイデアを閃きます。
このワーキングメモリの制約があるために”知っているけど閃くことができない“という状況になるのだと思います。
コンピュータを使用し、この制約を突破することで、新たなアイデアを生み出すことが出来るのではと考えています。
入力パターン
情報の入力パターン(リンクの種類)は、主構造、補構造、関連、分類の4種類
これはかなり悩んで出した結果です
分類と主構造の役割が似ているため、この2つは同じものじゃないかとか悩みました
でも”赤”に対して”色”をリンクするのと、”明るい色”に対して色をリンクするのは同種ではないと気づき、この結論に至りました。
構造は確かなもの、関連は曖昧なもの、繋がりにはメインになるものがある。
構造が左脳の役割、関連が右脳の役割なのではと考えています。
制作プログラム
PHPを使用してWebブラウザ+HTTP経由でデータの読み書きをします
初期の頃はMySQLを使用して、情報をペアレベルまで分解して記録し、HTTPリクエストがあったときに情報を組み立て直すといった感じの動作をさせてました
データ量が増えてくると読み込みに時間がかかるようになったため、Visual C++でネットワーク型のデータベースサーバーを書き直しました。
入力規則
組み合わせ言葉は、(主構造+補構造)で入力します。
例えば、赤いリンゴであれば、リンゴ(主) 、赤い(補)の2つのデータを入力します
単語に対しては、関連と分類に記録します。
例えば、りんごであれば、赤い(関連)、甘い(関連)、丸い(関連)、果物(分類)と入力
(ここが、赤い(補)、甘い(補)、丸い(補)、果物(主) で良いのではないかと、悩んだところです)
組み合わせ言葉にも、関連や分類をもたせることが出来ます。
例えば、野球ボールなら
ボール(主)、野球(補)、白い(関連)、野球道具(分類)
このように入力をします。
単語の説明に関しては構造で記録します。
これもすごく悩んだのですが、組み合わせ言葉に別名を付けて単語になっているものがあることが要因です。
パッと例が出てこないのですが、〇〇の△△と端的に説明できるものはこれにあたります。
そうならない例として、リンゴの場合は、赤い、丸い、甘い、果物こそがリンゴとは言い切れませんよね。なので関連と分類に記録します。
これで大体のものは記述できると思います。
これ以外の繋がりの種類は不要で、組み合わせ言葉で表現できます。
太郎が次郎の兄という情報も、太郎と次郎を兄リンクで繋ぐのではなく、太郎に、次郎の兄という組み合わせ言葉を関連リンクで持たせれば良いのです。
気づき
データを入力するうちに気づいた事がいくつかあります。
- 関連とは接続詞を省いた知識。(ゆえに曖昧)
- 関連は構造に変換できる。(りんご(赤い) → りんごは赤い)
- 構造に変換したときに、関連は主構造の位置にくる。( りんご(補) + 赤い(主))
- 構造化しないとリンクを貼れない。(りんごに対して赤いを貼れても、りんごは赤いという情報に対してリンクを貼れない → 組み合わせ言葉を作る必要がある)
応用と継承
これらを元に、データ入力時に、入力したもの以外の情報を表示させるようにしました。
1つ目が応用、構造を関連に変換して表示する機能です。
自己を補に持つ情報から、主を取り出して応用リンクとして表示します。
例として、錆びやすい(錆びる(補) + 容易(主))から、錆びるに対して容易を応用として表示します。ハズレも多いですが、たまにはおー(oh)と思うものが出てきます。
2つ目が継承、主構造と分類の子アイテムが持つ関連要素を継承リンクとして表示します。
例として、錆びるに対して腐食が分類としてリンクされるとき、腐食の関連要素である”環境が原因”を展開し、継承リンクとして表示します。
これはとても良い感じに展開されます。(継承なので当たり前ですが)
思考プログラム
こちらがまだ中々進まないのですが、2つのデータの交点を高速に見つけるプログラムを書きました。
実装はとても簡単で、リンクを5層ほど展開してダブるものが無いか見つけるだけです。
データはポインタで繋がっているため処理は高速です。
再帰を使って5層ほど展開すれば、4の4乗程度のデータが列挙されます。データ自体に検索済みフラグを持たせることで、2つ目のデータ展開時に検索済みかを判断できます。
これを使うことで、例えば、”叩く”と”工具”から”ハンマー”という交点を見つけることができます。(2層ほどしか離れてませんが)
これが第1の閃きのアルゴリズムです。(気づきと言ったほうが良いのかな)
まだ空想中ですが、似たものを探したり、似たものの一部を”置換”して新しい発想をさせたり出来るのではないかと考えています。
悩み: なかなか手に付かない
アイデアを閃いてから12年、作るぞ作るぞと意気込みながらも、なかなか進められずに悶々としてました。
怒りに囚われたのは親の介護ストレスよりも、夢を奪われるストレスのほうが大きかったのかもしれない。
夢がストレスと繋がってしまったのか、あるいは夢が肥大化しすぎたのか。
これをやるために仕事を辞めたのに、なかなか手を付けられない。
とにかく感情的にならずに淡々と進めないといけないですね。
最近のコメント