CS188.1x人工知能コースまたは自己学習AIアルゴリズムの最初の2週間

人工知能を備えた機械は今日、すでに何ができると思いますか?





写真では、タオルの折り方を知っているロボット。



カリフォルニア大学バークレー校のCS188.1x人工知能遠隔学習コースでは、 ダンクライン教授が人工知能の課題のいくつかを挙げています。 それらの一部は既に解決されていますが(全体または一部)、他の部分はまだ解決されていません。 このコースは、多くの最新のインテリジェントシステムがベースにしているAIアルゴリズムに専念しています。 私はそれが何から始まるかを簡単に共有し、最初の実用的なタスクについてもっと教えたいと思います。



最初の2週間は次のことに専念しました。



(参考として、ウィキペディアのリンク: 情報基づいいない検索方法 - 深さ 検索、幅優先検索ダイクストラのアルゴリズム情報に基づいた検索方法 -A * )。



人工知能の進歩のレビューとして、ダンクライン教授は、AIがすでに知っていることと、知らないことの次のリストをまとめました。 毎年、彼は、どのタスクがnoから疑わしいカテゴリーに移行し、どのタスクが質問されたカテゴリーからyesのカテゴリーに移行するかを記録しています。



3週目には、実用的なプロジェクトがありました。 講義で言及したすべてのアルゴリズムを実装する必要がありました。 特に、パックマンの世界のさまざまな条件の迷路でパスを検索します。



Pythonの課題のソース( zip-archive )は、 コースの公式Webサイトからダウンロードできます。ここには、すべての資料があります:ビデオ講義、プレゼンテーション、職務記述書。



次に、最初のタスクのテキストを翻訳し、ソリューションを検証するために起動する必要があるものを説明します。 タスクを完了するには、 AnacondaアセンブリなどのコンピューターにPythonをインストールする必要があります。



タスクN1。 特定の位置を検索します。 ディープサーチアルゴリズム



パックマンは曲がりくねった廊下とおいしい丸い点の世界に住んでいます。 そして、この世界での効果的なナビゲーションは、勝利への彼の第一歩です。







アーカイブを解凍します。 searchAgents.py



には、迷路を介してパス検索を開始し、このパスを段階的に実行する完全に実装されたSearchAgent



クラスがあります。 パス検索アルゴリズムは実装されていません-これがあなたの仕事です。



まず、 SearchAgent



クラスSearchAgent



正しくSearchAgent



ていることを確認しSearchAgent







 python pacman.py -l tinyMaze -p SearchAgent -a fn=tinyMazeSearch
      
      





このコマンドは、 search.py



で実装される検索アルゴリズムとしてSearchAgent



使用するようSearchAgent



指示SearchAgent



ます。 パックマンは迷路を正常に完了する必要があります。



最初のタスクを完了するには、ファイルsearch.py



あるdepthFirstSearch



関数を1つだけ追加する必要があり、深さ優先検索アルゴリズム(深さ優先検索またはDFS)を実装する必要があります。



発言。 アルゴリズム-深さ検索(DFS)、幅優先検索(BFS)、ダイクストラのアルゴリズム(UCS)およびA *は非常に類似しており、実装の詳細のみが異なります。 したがって、DFSを実装することで、DFSから残りを比較的簡単に取得できます。



参考までに、講義の擬似コードに関する一般的な検索アルゴリズムは次のとおりです。







用語の説明は、 講義またはウィキで見つけることができます。



重要な注1:検索機能は、エージェントを開始位置からターゲットに導くアクションのリストを返す必要があります。 したがって、グラフノードには、ゲームの現在の状態だけでなく、パスを初期位置から復元するために必要な情報も含める必要があります。 さらに、これらのアクションはすべて有効でなければなりません。 壁を通過しないでください。



重要な注意2: util.py



実装されているStack



Queue



およびPriorityQueue



データ構造を使用していることを確認してください。 これらの実装には、 autograder.py



との互換性に必要な特別なプロパティがあります(以下を参照)。



アルゴリズムが無限でないことを確認するには、検索機能を実装するときに、すでに考慮されている状態にアクセスしないでください。



あなたのコードは、すぐに次のソリューションを見つけるはずです。



 python pacman.py -l tinyMaze -p SearchAgent
      
      





 python pacman.py -l mediumMaze -p SearchAgent
      
      





 python pacman.py -l bigMaze -z .5 -p SearchAgent
      
      





コマンドの実行中に、迷路が画面に表示され、検索機能によって探索された場所が表示されます。 赤色が明るいほど、この状態が検索の結果としてパスに含まれる回数が多くなります。



ヒント: DFS実装でStack



を使用する場合、mediumMazeのソリューションは130要素の長さである必要があります( getSuccessors



提供する順序でスタックに新しい要素を追加する場合)。逆の順序で追加する場合は、 246)を取得します。 解決策は少なくとも経済的ですか? そうでない場合は、ディープサーチが間違っていることを考えてください。



pacman.py



すると、いくつかの入力パラメーターがサポートされます。 すべてのオプションとその意味のリストは、コマンドで呼び出すことができます



 python pacman.py -h
      
      





または、 commands.txt



ファイルを調べます。



ジョブ検証



アーカイブにはautograder.py



スクリプトが含まれており、次のコマンドを使用してコンピューター上のすべてのタスクの実装を確認できます。



 python autograder.py
      
      





autograder.py



詳細については、 コース マニュアルのオートグレーディング」セクションを参照してください。



最後にいくつかの言葉



最初は、周囲のコードが多すぎて理解しにくいように見えるかもしれませんが、すぐに通過します。 すべてのコードは十分に文書化されているため、迷うことはありません。



特に頭を悩ませたい人にとって、最も難しい仕事はNo.6No.8です。



簡単に始めようとしたので、コースのウェブサイトから講義を見ることをお勧めします。 そこには、他の多くの実用的なトピックと課題があります。



Habréには、このコースに関する記事がいくつかあります。 1 つと2つ3 から私は彼について学びました。



パックマンと頑張ってください!



All Articles