- ベストアンサー
自動で仮説を立てるような学習アルゴリズム
- C/C++(ネイティブ)を用いて、疑似的な「創造性」「芸術的な感性」を生み出す学習アルゴリズムを構築する方法について教えてください。
- 人間が思いつかなかったような新しい概念を考慮し、自動で仮説を立てて検証することができる学習アルゴリズムを実現するためには、評価関数のパラメータを自動最適化する方法や、遺伝的アルゴリズムを取り入れることが考えられます。
- 膨大なパラメータの中から乱数を用いて評価の方法について仮説を立て、検証していく手法が有効です。また、人間が感性で点数を付けることで、処理全体の総合評価を行うことができます。しかし、コード量は膨大になる可能性があるため、効率的な実装方法を検討する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
料理のレシピなんかで、考えてみるのはいかがですかね? 食材のパラメーターと、料理方法と遺伝的なアルゴリズムを用いれば、ある程度は可能かと。 希望的観測かな?(苦笑) 例えば、揚げ物はソースが合う、魚は醤油が合うというのは、科学的に合っている事です。 そういうデータをいれておけば、定番の料理はパソコンに推測させることは可能かと。 で、その中で定番のものは除害して、残ったものを評価するとか。 なんにしても食材と料理法を知り、再構築する必要がありますが。 あとは、食後のダメ出しですかねー。 『苺と鰯の半生テンプラソース添え』とか出ると思うんですよ。 それを何がダメなのか?の根本を入力していくしかないかと。 このくらいならできそうな気もしますけどね。(苦笑)
その他の回答 (1)
- k_kota
- ベストアンサー率19% (434/2186)
まず、やりたいことが明確に表現されていません。 感覚的な表現から、具体的にどのようなものなのかをある程度絞らないとアイディアも何もないですし、言語がどうとか言うかなり前の時点で止まってしまいます。 まず「仮説を立てる」と言うのが何を指すのかとかそう言うところから定義しないと行けない気がします。 膨大な回数を人間が判定するのを仮定するのも無理がある気がします。 100とか1000は機械の学習としては大体の場合で「少なすぎてお話にならない」でしょう。 画像の判別学習にインターネット閲覧の人の力を使うとかもありますけど、 画像でもそれくらいのパワーが必要と言うことです。 複雑な感性的なものをアルゴリズム化するならとはオーダーが異なる判断が必要になりそうです。 私も思ったことを書きましたが、とりあえず問題を分けて具体化しないと厳しいと思います。
お礼
ご回答ありがとうございます。 将来的には評価方の自動生成が出来るなら、別途作っている3Dのモデリング・兼動画書き出しソフトとかにもその根源となるアルゴリズムは使えると思いますが 今何よりもやりたいのは作曲・編曲をより速くしたいというところです。 それとは別件で、世の中のDAWソフトでは難しい、という事がどうにもやりたかったため 数年がかりで現在自分でDAWソフトっぽいものを既にかなり作りこんできており 「評価の方法」について少なくとも数十種類程度はアイデアもあるため、その範囲の評価・計算なら時間を掛ければ出来る段階にいます。 「仮説を立てる」「検証する」というのは 「このパラメータとこのパラメータがもし関係しているとしたら」「その関係の方法込みで」数値化し、それが総合評価(点数)にどう影響を与えるか、あるいはあまり影響しないか を、事後の人間の点数つけ(誤差修正)によって その人間の感性をより自動的に再現しやすく修正していくという作業です。 >100とか1000は機械の学習としては大体の場合で「少なすぎてお話にならない」でしょう。 それはアルゴリズムにもよると思いますし 少なければ何らかの方法で増やせばいいと思います。
補足
まてよ、型の種類やパラメータの種類に数字を割り振れば 乱数で種類の組み合わせを無作為に選ぶ事が出来ますね。 C++ではtemplate・特定の名前の関数を使うなどすれば出来るかもしれません。 関係の方法(差分か倍率か指数的か、もうちょい複雑な関数か、前後関係はどうか) とかも考えられ得る関係の種類(これ自体複数の組み合わせでの表現も可能)を数字と結び付けておけば 乱数で無作為に選べますね 別件で 「将棋」は二人零和有限確定完全情報ゲームの一種のはずですが(ただし終盤でなければ現実的に全探索が出来ないため必然曖昧な評価関数が必要になります) ボナンザについての概要説明 http://ja.wikipedia.org/wiki/Bonanza を見てたら、案外現実的に、どんどんアイデアを細分化してけば 分野は違えど『今回の要件』についても出来そうな気がしてきました。 つまり、やっぱり自分でだだっぴろくて組み合わせが無数にあるような土俵を用意しておいて、その組み合わせを選ばせる、ってことなら出来そうですね。 コードを書いた範囲、変数を用意した範囲、変換する関数を用意した範囲 の中でならば それ以上のことは出来るのかどうか気になりますが(それが出来るなら人工知能が「意志」を持ってアセンブリレベルで自らを超高速進化させられる、という位の内容にもつながり得そうですが) 現状では既存の解析法を調べまくったり既に思いついてる概念もコード化する、といったことも大事そうですし、上記の方法でうまくいきそうな気がしてきたので もうちょっと待って特にさらなる進展がなければ解決とさせていただきます。 しばらくは引き続き回答待ちとさせてください。
お礼
そろそろ締め切ろうかとおもって開いたら数分前に…w ご回答ありがとうございます♪ やっぱそんな感じですよね とはいえ判断材料が増えれば増えるほど「プロの感覚」に近づくと思います。ちなみにボナンザはチェスの世界最強(グランドマスターでもぜんぜん勝てない)のソフトの原理をつかってたんじゃなかったかな 米長永世棋聖に勝ったボンクラーズ(ボナンザを改良してPCを大量につなげまくった?) だったかボナンザだったかは、有効パラメータ数80万~100万と聞きましたし (2012年優勝のGPS将棋に関しては今のところ詳しく知らないですが) 出来る事からはじめていって、とりあえずはそんな感じでやってみようと思います。 ※細かいとこをどんどん思いつき次第組んでくと、その場その場でアイデアが膨らんでいって、最終的に思いもよらない結果になる、というのは何度も経験した、ということもありますし。 時間があればボナンザやGPS将棋のソースでも読んでみようと思います http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E5%B0%86%E6%A3%8B