写真では、タオルの折り方を知っているロボット。
カリフォルニア大学バークレー校のCS188.1x人工知能遠隔学習コースでは、 ダンクライン教授が人工知能の課題のいくつかを挙げています。 それらの一部は既に解決されていますが(全体または一部)、他の部分はまだ解決されていません。 このコースは、多くの最新のインテリジェントシステムがベースにしているAIアルゴリズムに専念しています。 私はそれが何から始まるかを簡単に共有し、最初の実用的なタスクについてもっと教えたいと思います。
最初の2週間は次のことに専念しました。
- Pythonプログラミングの概要 。
- AIの分野における最新の成果の開発とレビューの歴史( ビデオ );
- 情報に基づいていない検索方法( ビデオ )-深さ検索、幅優先検索、ダイクストラのアルゴリズム。
- 情報に基づいた検索方法( ビデオ )-A *。
(参考として、ウィキペディアのリンク: 情報に基づいていない検索方法 - 深さ 検索、幅優先検索 、 ダイクストラのアルゴリズム 、 情報に基づいた検索方法 -A * )。
人工知能の進歩のレビューとして、ダンクライン教授は、AIがすでに知っていることと、知らないことの次のリストをまとめました。 毎年、彼は、どのタスクがnoから疑わしいカテゴリーに移行し、どのタスクが質問されたカテゴリーからyesのカテゴリーに移行するかを記録しています。
- 卓球をするのは良いことです-はい。
- Jeopardy(Own game)をプレイするのは良いことです-はい。
- 曲がりくねった山道での安全運転-はい。
- Telegraph Avenue(通り)に沿って車を安全に運転する-疑わしい;
- インターネット経由で1週間食料品を購入-はい。
- 普通の店で1週間食料品を買う-いいえ。
- 新しい数学的定理を発見し証明することは疑わしい。
- 1時間以内に人との対話を成功させる-いいえ。
- 手術を行う-疑わしい;
- 皿をきれいにして洗濯物をたたむには -はい。
- 話されている中国語をリアルタイムで話されている英語に変換します-はい。
- 面白い話を書くことはそうではありません。
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.6とNo.8です。
簡単に始めようとしたので、コースのウェブサイトから講義を見ることをお勧めします。 そこには、他の多くの実用的なトピックと課題があります。
Habréには、このコースに関する記事がいくつかあります。 1 つと2つ 、 3 つ 目から私は彼について学びました。
パックマンと頑張ってください!