フェノトロピックプログラムの設計


15

最近、Jaron Lanierが「フェノトロピックプログラミング」というアイデアを思いつきました。

考え方は、統計を利用して、通常「古典的な」プログラムを壊滅的にクラッシュさせる小さなエラーを選別するコンピュータープログラムで、シングルポイントインターフェイスの代わりに「表面」インターフェイスを使用することです。

2行の説明は次のとおりです。

Jaronによれば、「プロトコルの遵守である現在のソフトウェアのアイデアと、パターン認識について議論しているアイデアとの本当の違いは、私たちが作成している種類のエラーに関係している」 「ソフトウェアの考え方や作成方法を変えることはありません。プロセッサがどれほど高速になっても、約1,000万行を超えるコードを書くことはありません。」

少し長い説明はこちらです。さらに長い説明はこちらです。

だから、質問は、人々が選ぶ傾向がある明らかなロボットの支配者の意味を過ぎて見て、「フェノトロピックプログラム」を実際にどのように設計して書くのでしょうか?


1
違反はありませんが、リンクした記事は非常に曖昧で素朴です。あなたが理解していることについてもっと正確に教えていただけますphenotropic programか?
サイモンベルゴ14年

ずっと長いものを読んでください。細かく説明しています。
adv 14年

4
これに答える唯一の方法は、「フェノトロピックプログラム」とは何かを定義することだと思います。その場合、答えは意見に基づいたものになります。「フェノトロピックプログラム」の書き方を尋ねる前に、「フェノトロピックプログラム」とは何かを尋ねてください。
陶酔14年

1
@Simon:質問は基本的にまったく同じことをしているので、OPが実際に質問に答えずにあなたのリクエストが可能かどうかはわかりません。
ロバートハーベイ14年

1
関連トピック(テキストの著者を考える):mail-archive.com/fonc@vpri.org/msg03808.html
チアゴ・シウバ

回答:


23

Lanierは、特定の識別可能な特性を持つコンピュータープログラムを作成するための計算モデルを説明する特定のアイデアのセットにネットをキャストしようとして、50セントの単語を発明しました。

言葉の意味:

関数呼び出しまたはメッセージ受け渡しの代わりにパターン認識または人工認識を使用するコンポーネントの相互作用のメカニズム。

このアイデアは主に生物学から来ています。あなたの目の世界とのインターフェース、ないような関数を経由してSee(byte[] coneData)、しかしを通じて表面には、網膜と呼ばれます。些細な違いではありません。コンピューターはすべてのバイトをconeData1つずつスキャンする必要がありますが、脳はこれらすべての入力を同時に処理します。

ここに画像の説明を入力してください

Lanierは、後者のインターフェースはよりフォールトトレラントであると主張していますconeData。彼は、パターンマッチングと、コンピューターでは通常困難な他の多くの機能を有効にすると主張しています。

コンピュータシステムの典型的な「フェノトロピック」メカニズムは、人工ニューラルネットワーク(ANN)です。定義されたインターフェイスではなく、入力として「表面」を取ります。パターン認識の尺度を達成するための他の手法もありますが、ニューラルネットワークは生物学と最も密接に連携しているものです。ANNの作成は簡単です。必要なタスクを確実に実行させることは、いくつかの理由により困難です。

  1. 入力と出力の「サーフェス」はどのように見えますか?それらは安定していますか、それとも時間とともにサイズが異なりますか?
  2. ネットワーク構造をどのように正しくしますか?
  3. ネットワークをどのようにトレーニングしますか?
  4. 適切なパフォーマンス特性をどのように取得しますか?

生物学を手放す場合は、生物学的モデル(実際の生物学的ニューロンの動作をシミュレートしようとする)を省き、デジタルコンピューターシステムの実際の「ニューロン」とより密接に関連するネットワークを構築できます(ロジックゲート)。これらのネットワークは、Adaptive Logic Networks(ALN)と呼ばれます。それらが機能する方法は、曲線を近似する一連の線形関数を作成することです。プロセスは次のようになります。

ここに画像の説明を入力してください

...ここで、X軸はALNへの入力を表し、Y軸は出力を表します。ここで、精度を向上させるために必要に応じて線形関数の数が増えることを想像してください。また、AND論理ゲートとOR論理ゲートで完全に実装されるn個の任意の次元で発生するプロセスを想像してください。

ALNには、特定の非常に興味深い特性があります。

  1. 彼らはかなり簡単に訓練でき、
  2. それらは非常に予測可能です。つまり、入力のわずかな変化は出力に大きな変動をもたらさない
  3. 論理ツリーの形で構築され、バイナリ検索のように動作するため、非常に高速です。
  4. それらの内部アーキテクチャは、トレーニングセットの結果として自然に進化します。

したがって、フェノトロピックプログラムは次のようになります。入力用の「表面」、予測可能なアーキテクチャおよび動作があり、ノイズの多い入力には耐性があります。

さらに読む
リスク評価を監査するアプリケーションを備えたアダプティブロジックネットワークの概要
「オブジェクト指向」と「メッセージ指向」、アランケイ


1
間違っている場合は修正しますが、「表面」入力は、独立した(またはほとんど独立した)コンポーネントのコレクションのように聞こえます。目の例では、このように見えるかもしれませんSee(List<Cone> cones)(それぞれConeが互いに独立している場合)。
FrustratedWithFormsDesigner 14年

1
@Frustratedバイト配列を使用してサーフェスをシミュレートすることはできますが、メッセージの受け渡しと関数呼び出しを認識とパターン認識に置き換えるLanierの定義に戻ります。ここで説明さたスケーラビリティ問題と結びつきます。フォールトトレランスも方程式の一部です。「よりスマートなインターフェース」を考えてください。
ロバートハーヴェイ14年

3
再:「よりフォールトトレラント」。ラニエは目の錯覚を見たことがありますか?彼は脳の心理学を調べたことがありますか。脳は常に、その入力が何を伝えているかを理解しようと試みますが、これらの結論がどのように間違っているかは重要ではありません。脳の働き方は非常に不完全です。したがって、典型的な人間のように、プログラムが頻繁に誤動作するかどうかが問題でない限り、参照されているモデルは問題ないと思います。ただし、ほとんどの場合、人々はコンピューターが正しいと期待しています。ほとんどの場合、事故を回避するコンピューター駆動の車を販売するのは難しいでしょう。
ダンク14年

2
@Dunk:...しかし、ほとんどの場合、事故を回避することができる人間のドライバーのために車を製造し販売することは依然として合法です。
ドックブラウン14年

2
@Dunkのポイントは、障害の存在ではありません。ポイントは1:障害の影響の範囲(ウサギをゴリラと間違えても宇宙はクラッシュしない-実際、その後も人間として機能し、脳も息子も機能する)、2 :部屋の物理的/生物学的エンティティは、回復し、フィードバックを提供し、「物事が進行し続ける-最適でない方法でさえ」代替案を探さなければなりません。そして3:これらの特性は私たちの人工システムでそれらを望むことを説得力があるという考え
チアゴ・シルバ14年

1

私たちはそこにたどり着くために必要なステップの最初の段階にあり、それが分析可能な形式で多くのデータを収集していると思います。インターネット、グーグル検索、Fitbit(あなたが行うすべてのステップ、あなたが行うすべての動き、私はあなたを見守っています。)、FourSquare、スマートフォンの地理的位置、Facebookの投稿、SOの質問データがすべて収集されています。平均的な人間が生涯にわたって編集している感覚データの量に近いところはありませんが、近づいています。

何百万もの鳥の写真の分類を開始し、鳥ではないという人からのフィードバックを得て、アルゴリズムの作成を開始できます。そこからファジーな印象(私はそれをモデルと呼びますが、私たちがコーディングしようとしているものに対してはあまりにも正確です)を作成できます。

class Birdish

飼い犬は飼い主についてどうやってそんなに知りますか?それは彼女をよく見るからです。犬は車が私道に引き込まれ、犬が正面ドアを開けると犬が車の音で車を認識できるようになると相関していることを聞きました。これもできますが、これに参加する理由はありません。そして、それが現在のソフトウェアのどこが悪いのか、ユーザーが何をしているかに注意を払っていない。ITがユーザーに期待することをユーザーが行うのを待つだけです。

目覚まし時計の設定と同じくらい簡単なことは、私の現在の習慣を少し観察/分析することで行うことができます。技術がデジタルに置き換わる前に、VCRタイマーの設定をあきらめました。そして、TVガイドとVCRをインターフェイスさせることができた場合、それは同じくらい速く起こりましたか?私は同じテレビ番組を4週間連続で見ましたが、5回目はテレビの電源を入れませんでした。明らかにそれを記録したい。私はこの記事を書いて仕事に遅れをとっており、私の典型的な通勤では時間内に家に帰れないと言えませんか?データを取得したので、計算を行います。

より多くのデータを収集すると、それを分析、認識、および隠蔽するためのより良い方法を思い付くことができます。私たちは、携帯電話のカメラとすぐに目のガラスのカメラでキーボードからしか入力できないものを超えています。それはほんの始まりです。


1

Scalaで確率的プログラミング言語を定義するためのスライドセットを次に示します。

これは、Jaron Lanierが提案するシステムのコアコンポーネントの一部の最初の適切な実装例です。


これはとてもいいですね。おそらく、同様のことを行うJava用のライブラリーの設計に挑戦します。
adv

@advあなたがそうするなら、どうやってそれを見つけますか?
新しいアレクサンドリア

1
githubリポジトリの作成に近づいたら、リンクを投稿します。
adv

-1

私が最近持っていた考え:

HaskellのMaybe Monadのような高レベルのアイデアを使用して、他のシステムへのリモートプロシージャコールをラップした場合。サーバーにリクエストを送信します。しかし、何も返されません(サーバーが壊れています)。または、Promiseが戻ってきて(サーバーがビジー状態)、プログラムはNoneまたはPromisedの値で引き続き動作します。これは、Lanierが求めている耐障害性のようなものです。

他の不測の事態をカプセル化する方法があるかもしれません。たとえば、ある種のバックグラウンドネゴシエーションによって時間の経過とともにますます洗練された近似値で返されるリモート呼び出し。すなわち。戻ってくるのはPromiseのようなものですが、「これを保持し続けると適切な値がすぐに上がります」ではなく、「これを保持し続けるとより良い近似がすぐに現れます」です。(そして何度も)。ネットワークプロトコルがプログラマから多くの低レベルのネットワーク障害を隠すように、これはプログラマから多くの障害を隠すことができます。


これは質問にどう答えますか?
ブヨ

正しく理解すれば、フェノトロピックプログラミングは、大規模な(多くの場合、マルチコンピューター)堅牢なシステムをプログラムする方法です。問題は、すべての生物学的メタファーにより、実用的なプログラミング用語への翻訳が曖昧で困難になることです。ここで私は(。つまりモナド、約束など)漠然としていない特定のプログラミング構造はラニアーのコンクリートのこれらのアイデアのいくつかを作るための方法と実質的にprogammableかもしれないことを示唆しています)。
interstar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.