-1

さて、私は一連の数字のパターンを発見できるソフトウェアを開発しなければなりません。例:

最初のパターン: 10,20,30,40,50.. (ソフトウェアは、数値が常に +10 であることを理解する必要があります)。

2 番目のパターン: 1,3,5 ... (ソフトウェアは、数字が常に奇数であることを理解する必要があります)。

したがって、パターンはユーザーによって定義され、ソフトウェアはシーケンスを続行する必要があります。これを提案するいくつかのアルゴリズムが存在しますか?

PS: BackPropagation などの IA 手法について考えていますが、これはより良い解決策ですか? もっと簡単な解決策がありませんか?

4

4 に答える 4

3

アルゴリズムが何でも学習できるようにするには、検索空間をより小さな空間に制限する、またはアルゴリズムが他の仮説よりもいくつかの仮説を優先するようにする帰納的バイアスが必要です。

検索のスペースは、整数から整数までのすべての関数のスペースです。このスペースは、実用的なアルゴリズムを作成するには広すぎます。小さいスペースを選択する必要があります。

醜いアヒルの子の定理と、検索と最適化におけるフリー ランチの定理も参照してください。

于 2014-01-05T18:06:36.710 に答える
1

が与えられたとしますa0, a1, ..., ak。いくつかのパターンに行くことができます:

  1. 多項式シーケンス、Ansatz an = c0 + c1*n + c2*n^2 + ... + ck*n^k: . k+1(0,a0),, (1,a1)...を通じて、(k,ak)次数の多項式をいつでも適合させることができますk。これは一般的なケースではあまり興味深いことではありませんが、最高次の係数ckがゼロの場合、最後のシーケンス番号akは前のシーケンス番号によって定義された多項式に適合します。このようにして、奇数、平方数、三角数 (1、1+2、1+2+3、...) などを見つけることができます。

  2. 線形再帰、Ansatz : order の線形再帰の方程式an = c0 + c1 * a(n-1) + ... + cm*a(n-m)が必要です。このようにして、フィボナッチ数 ( ) のような数列だけでなく、幾何学的数列 (1、2、4、8、...) や 1、11、111、... ( ) などの数列も見つけることができます。方程式は次のとおりです。m+1man = a(n-1) + a(n-2)an = 10*a(n-1)+1m+1

    am = c0 + c1 * a(m-1) + ... + cm*a0

    a(m+1) = c0 + c1 * am + ... + cm*a1...

    a(2m) = c0 + c1 * a(2m-1) + ... + cm*am

    したがって、m=floor((k-1)/2)st2m<kを設定してから、再帰がakand おそらくにも当てはまるかどうかを確認できますa(k-1)

他にもパターンはありますが、この2つはすでに非常に強力で、多くのケースをカバーしています。

于 2014-01-05T18:42:06.300 に答える
0

あなたが提案する問題は両方とも線形であるため、次の形式で解決策があります

y = mx + c

たとえば、最初はm==10, c==10で、2 番目はm==2, c==1です。

このような線形関係を決定することは簡単であり、より複雑な関係を決定する手法を使用することはできますが、ソフトウェアにそれらが「意味する」もの (たとえば「奇数」) を教えることは多かれ少なかれ不可能です。たとえば、関係の「性質」を見つけるには

2, 3, 5, 7, 11, 13

おそらく、すでに関係を念頭に置いて特定のテストを作成する必要があります。

于 2014-01-05T18:03:08.350 に答える