2010-11-21 17 views
1

- 私:ユーザとマシン BETWEEN MYプログラム学習の相互作用の簡単に学習機械プログラム

説明文字列操作を行うプログラムの開発を、ティーチの 方法は次であります: まず、私はあなたがそれをキャッチしてください

input(ab) - output(aabb) 
input(ac) - output(aacc) 
input(ie) - output(iiee) 
input(pt) - output(pptt) 

のようなルールを想像? :)

私は一組のデータセットを入れました。 入力(ab) - 出力(aabb) 私はボットン(put-into-memory botton)を押してこのデータをプログラムメモリに入力し、その後私は他のボットン(Try-to-guess botton)を押します。 Try to to-guess bottonを押すと、プログラムは何か...出力(abbb)または出力(aaaa)のような応答を返します... 何でも... 私のプログラムは、試みる。

私の最初のデータセットの答えが間違っていて、try-again bottonを入れてください。 前の段落で私は基本的なインタラクションのユーザマシンを試しました 前のプロセスが3つ、4つ、または何らかの有限と子のスケールの回数繰り返されたら、プログラムが私が気づいたルールに到達することを願っています。

私のプログラムが正しい答えを得たら、私は2つの選択肢があります: "Good!"ボットンと 私のプログラムが常に私にいくつかの良い答えを与えているのを見たら他のオプション(私のプログラムは私のルールを推測しているようです)私はあなたがそれを推測しました!!ボットン。 注:ここでのBottonは同じコマンドを意味します

したがって、プログラムは出力をチェックする多くのプロセスで私のルールを学習します。 このプログラムは、私が考えているルールを学ぶことを試みます。データペアの入出力を分析するだけです。 私はこのプログラムがフレーズのLUTを作り、特定の出力とどのような入力が対応しているのかを調べることを想像します。 私は基本的なalgotithmはこれのように何かと思います。このアルゴリズムは入力のLUTを生成し、特定の入力に対応する出力を見つけることを試みる。私は質問

(これは、マルコフ連鎖のような何か必要はありません)の前に私の説明RULES

の種類

十分です。このプログラムドントは、セット入力・出力リレーについての記憶を持っていることを望みます

このようなことは誰もがすでに分かっていますか? このウェブサイトがこの質問を行うのに最適な場所なら、最高の場所は何ですか? stackoverflowがこの質問を行う適切な場所でない場合、私は自分自身を検索するために私のウェブサイトを共有してください。 これを行うには最高のプログラミング言語は何ですか? (この最後の質問をするウェブサイトではない場合は、ウェブサイトを指定してください) その他のアドバイスは歓迎します! ありがとうございます!

+0

hhaarrdd qquueessttiioonn –

+0

II konw riiightt – mauris

+0

ひとつのアイデアは、* –

答えて

2

あなたがしたいことは、入力を出力にマッピングする関数を学習することです。

簡略化のために、文字の代わりに数字があるとします。たとえば :

n1は第1の数と第2のN2がある場合
input(23) - output(2233) 
input(01) - output(0011) 

、あなたは右、関数に 1100 * N1 + 11 * N2を学びたいですか?私は最初の数字は2桁しか持っていないと思います。なぜなら、もっと多くの例を提供していなかったからです(そして、長い桁で何が起こるかわかりません)。 しかし、これは上記の場合に他の数字をすべてゼロに設定するだけで、より多くの数字に簡単に一般化することができます。

Linear Regressionはこの問題を簡単に解決できます。

「試行錯誤」機能を追加する方法がわかりません。 私の頭に浮かぶ機械学習方法はReinforcement Learningですが、この文脈でどのように使用するのかは分かりません。

ところで、なぜこのような機械学習方法で簡単なことを学ぼうとしていますか?簡単な文字列操作で簡単に行うことができます。

+0

はい、私はあなたのルールの説明、1100に同意し、「有限オートマトンの学習」を検索し、すべての与えられた例が収まる最も簡単な有限オートマトンを見つけようとすることですn1 + 11 * n2、n1とn2が{0,1,2,3,4,5,6,7,8,9}の場合実際、私は自分のルールを正式に説明しているわけではありません。しかし、私は、いくつかの例を通して直感的な方法でそれをキャッチするのは簡単だと思います。 – Peterstone

+0

これを任意のベースに一般化できます。たとえば、文字を値(a-1、b-2など)にマップし、最大数をベースとして使用できます。したがって、1-nの間に数字がある場合、出力はn^3 * n1 + n^2 * n1 + n^1 * n2 + n^0 * n2です。 – George

+0

あなたはそれをどのように知っていますか?特定の数学的アプローチや数学的直感だけを使ったことがありますか? – Peterstone

0

私は私はあなたが欲しい機能「を試してみて、エラー」ことを追加することができますか分からない

...についてお応えします。唯一の機械学習方法は強化学習ですが、このような状況での使用方法は私には分かりません。 ところで、なぜ、機械学習の方法でこのような単純なことを学ぼうとするのでしょうか?簡単な文字列操作で簡単に行うことができます。

私は、文字列操作に焦点を当てLUTから強化アルゴリズムへの変換に焦点を当てるアルゴリズムを作成する独自の質問を解決できると思います。任意の言語のコードを書くことではなく、人間と機械の間の単純な相互作用に基づいていない

  • A「プログラミング」方法:しかし - 私はいくつかのことを見ています。プログラミングの仕方を直感的に理解できない人がこのプログラムを作成する方法を想像してみてください。ですから、私たちは "プログラム"という言葉を偶然出さなければならず、 "スキル"という言葉を入れなければなりません。 (最終的にはプログラマだけが使用します:))

  • 数学や統計についてあまり知らないIAアプリケーションを実行する可能性を探る。線形回帰や積分のようなものを理解する前に、基本的な算術を解くことを学んだということは面白いです。 問題。特定の問題を解決するために特定のアルゴリズムではなく、数学で過度に心配していません。あなたのリンクに感謝します。

  • は、自分のコンピュータに簡単な事を教え楽しい時間を持っているいくつかの正式なデリバティブを行う方法を、言葉、和テーブル、乗算テーブルを逆にしたい、スペイン語の言語の単語、対話と最も興味深いものをシミュレート... 。 すべての組み合わせ! 私のコンピュータをプログラミングせずに数えることは素晴らしい夢です!