機械学習アルゴリズム

現在の機械学習



一般的な機械学習方法では、プログラムはアルゴリズムを学習しません。 分類器、ニューラルネットワーク、またはより明確にするために、回帰メソッドは、せいぜい関数を(プログラマーではなく数学的に)学習します。入力データを持ち、出力データを出力します。 これは、せいぜいアルゴリズムの唯一のステップである可能性があり、そのようなソリューションを1ステップではなくアルゴリズム全体にスケーリングする方法は明確ではありません。 アルゴリズムを学習する能力がなければ、これらの方法はAGI(人工知能)とはかけ離れています。 AGIに向かう途中で、プログラムが分岐、ループ、およびルーチンを使用してアルゴリズムを学習する方法を見つけることができればうれしいです。 次のステップは、他のプログラムを理解するためのプログラムを教えることです。 さらに理解し、自分自身を向上させます。 私は、人々がAGIに行くのはこのようであることを主張しませんが、これは私の謙虚なビジョンです。



応用人工知能としてのプログラム



機械学習の他の方法とは異なり、暇なときにユーザーに質問する対話型システムを作成し、各回答が可能な目標のリストを提供します-ユーザーが好きなもの、新しいゲーム、映画、本、製品、サービスなどです。 新しい検索エンジンの意味は、ユーザーが正確に何を探しているのかわからない場合があるため、既存の検索エンジンに誘導するキーワードを形成できないことです。 しかし、プログラムの質問への答えは可能であり、「私は知らない/答えるのが難しいと感じる」という選択肢が常にあります。



実装と競合他社



これがどのように機能するかの例は、同様のことをした他の人に見られます: AkinatorAkinatorが登場する前に私に思いついたアイデアについては話しましょう 。 最近実装したばかりで、Akinatorとは異なり、オープンソースで投稿しました。ProbQAオープンソースコードはこちらです。 Akinatorが機能するアルゴリズムは不明です。 C ++の誰でも自分のアルゴリズムを見ることができますが、コードを読みやすくするために、もう少し詳しく説明します。 N x K x Mのマトリックスが使用されます。ここで、Nは質問の数、Kは回答の数、Mは目標の数です。 このプログラムは、ユーザーがj番目のターゲットを一連の質問と回答の望ましいターゲットとして選択した回数に関する統計を保持します。 さらに、独立性を仮定して、反対が決定されます。前の質問と未回答の質問を候補として含む一連の質問と回答のj番目の目標の確率が次になります。 各質問には優先順位関数に基づく重みが割り当てられます。優先順位関数は、目標の新しい(つまり、新しい質問の後)エントロピーと、目標の古い確率と新しい確率の間のユークリッド距離に依存します。 次に、「最適な」質問が重み付きランダム方式で選択されます。



C ++でバックエンドのみを実装しました。 誰かがフロントエンドWebアプリケーションを書くのを待っています。 私自身はこれに特化していません。



プログラムはアルゴリズムを研究します



プログラムProbQA(確率的質問)は、機械学習の他の方法とは対照的に、アルゴリズムを本質的に学習できることがわかります。 彼女は、二分探索アルゴリズム(二分法)の研究で良い結果を示しました。以下の図を参照してください。 彼女はアルゴリズムを学習していると言えます。なぜなら、彼女の知識があれば、プログラムは次のことを行うからです。いくつかのステップでユーザーとやり取りし、究極の目標を導きます。 プログラムは入力を要求し、入力に応じて分岐し、ユーザーに何か他のものについて尋ねます。



画像



上の写真は、プログラムによる二分法アルゴリズムの研究の曲線を示しています。 X軸では、プログラムが質問し、ユーザーが回答する質問の数、Y軸では、256回の連続試行で正しく推測されたバイナリ検索目標の割合。 テストは常に新しいデータで実行されます:0から999の乱数を作成し、ユーザーに質問をして回答を受け取ることでプログラムに推測させます(この場合、ユーザーは設定された番号を知っているテストプログラムです)。 さらに、ProbQAが正しく推測した場合、または失敗した場合(100以上の質問をした場合)、テストプログラムによって選択された数を明らかにすることで学習します。



写真からわかるように、ProbQAトレーニングでは、行列のサイズにほぼ等しい質問と回答の数が最大100%の精度で取得されます。 この場合、マトリックスは、1000の質問に5つの回答オプションを掛け、1000の目標を掛けたもので構成されます。 これらの1000個のi番目の質問にはそれぞれ、「隠された数字は数字iに匹敵しますか?」という形式があります。 回答オプション:0-「隠し番号はiよりもはるかに小さい」、1-「隠し番号はiよりも少し小さい」、2-「隠し番号はiと等しい」、3-「隠し番号はiよりも少し大きい」、4-「隠し番号ははるかに大きいi "。



今、彼は次の質問に興味を持っています。正しい目標につながる一連の質問の長さは? 次の図では、最初(トレーニング中)にプログラムが多くの質問をしますが、プログラムが既にアルゴリズムを学習している場合、平均チェーン長は7問に減少します。



画像



manによって書かれたバイナリ検索アルゴリズムがln(1000)/ ln(4)= 5の質問をすると、結果は良いと考えることができます。 残りの2つの質問は、新しい学習なしにプログラムが学習を続け、すべてを最大限に活用しないために必要です。 これは、前述の優先度関数と、「最も最も」差別化された質問ではなく、重み付きランダム質問が選択されるという事実によって制御されます。



人間が作成した二分法アルゴリズムは学習しないという事実に加えて、このようなアルゴリズムはエラー耐性ではないことに注意する必要があります。 入力のどこかで間違った答えを受け取った場合、その後、彼は隠された番号を見つけられません。 ProbQAは、確率に従ってターゲットをソートします。



長期



これまでのところ、英語のリンクの形で、 情報はローテクであり、「夢」のカテゴリに分類される場合があります。



  1. 人工スーパーニューロン
  2. 新しいプログラミング


必要に応じて、これら2つに基づいて個別の記事を作成できます。



All Articles