人工知能の学習をどのように開始しますか?


16

私はソフトウェア工学の学生であり、AIの完全な初心者です。AIの学習を開始する方法に関する多くの記事を読みましたが、各記事は異なる方法を提案しています。あなたの専門家の何人かが私が正しい方法で始めるのを助けることができるかどうか疑問に思っていました。

さらに具体的な質問

  1. どの言語に焦点を当てるべきですか?多くの記事は、Python、C ++、またはLisp for AIを提案しています。上記の他の言語の代わりにJavaを使用できますか?

  2. どんな数学的な背景が必要ですか?最初の1年間、私は次のトピックを含む離散数学を行いました:集合、行列、ベクトル、関数、論理、グラフ理論(彼らはこれらのトピックを簡潔に教えました)。今すぐ学ぶべきトピックはありますか?たとえば、計算?

可能であれば、始めるために使用できるリソースや書籍をいただければ幸いです。または、皆さんがレベルに追いつくために従うことができる詳細な手順を教えてくれるかもしれません。

注:今のところ、ニューラルネットワークと機械学習に焦点を当てたいと思います。その後、ロボット工学と自然言語処理を探求したいと思います。


回答:


16

人工知能は非常に幅広い分野であり、コンピューターサイエンス、数学、ハードウェアデザイン、さらには生物学や心理学の多くの非常に深い分野をカバーしています。数学に関しては、計算、統計、最適化が最も重要なトピックであると思いますが、できるだけ多くの数学を学んでも害はありません。

AIについては、初心者向けの無料の入門資料が数多くあります。http://aiplaybook.a16z.com/から始めることを強くお勧めします。 彼らはまた、AIの一般的な概念に関する2つのビデオを公開しました。Vimeoでそれらを見つけることができます。 「および「AIの約束」

基本的なAIの用語とアプローチを明確に理解したら、目標は何かを理解する必要があります。どのような種類のAIソフトウェアを開発したいですか?どの産業に興味がありますか?大企業のプロジェクトに参加する可能性はありますか?何を達成したいのかを正確に把握していれば、適切なツールを選択するのは簡単です。

AIのほとんどの初心者にとって最も興味深い分野はディープラーニングです。明確にするために、機械学習の外にはAIの多くの領域があり、深層学習の外には機械学習の多くの領域があります。(人工知能>機械学習>ディープラーニング)最近の開発と宣伝されているニュースのほとんどはDLに関するものです。

ディープラーニングにも興味がある場合は、人工ニューラルネットワークの概念について学習することから始める必要があります。幸いなことに、基本を理解するのはそれほど難しくありません。Webには多くのチュートリアル、コード例、無料の学習リソースがあり、実験を開始するオープンソースフレームワークがたくさんあります。

そのような最も人気のあるディープラーニングフレームワークはTensorFlowです。Googleが支援しています。好きでも嫌いでも、Pythonベースのフレームワークです。他にも多くのPythonベースのフレームワークがあります。Scikit-learn、Theano、Kerasもチュートリアルで頻繁に言及されています。(ヒント:Windowsを使用している場合、これらのフレームワークをすべて含むWinPythonをダウンロードできます。)

Javaフレームワークについては、残念ながらそれほど多くのオプションはありません。DLの最も顕著なJavaフレームワークはDeeplearning4jです。それは小さな会社によって開発され、そのユーザーベースはTensorFlowの周りの群衆よりもはるかに小さいです。このフレームワークのプロジェクトとチュートリアルは少数です。ただし、業界の専門家は、Javaベースのフレームワークは最終的にJavaベースのビッグデータソリューションとより良く統合し、より高いレベルの移植性とより簡単な製品展開を提供できると言います。ただの補足:NASAのジェット推進研究所は、多くのプロジェクトにDeeplearning4jを使用しました。

フローを使用してTensorFlowの詳細を学習する場合は、「DeepLearning.TV」、「sentdex」、「Siraj Raval」のYouTubeチャンネルを確認することをお勧めします。素晴らしいチュートリアルといくつかのクールなデモがあります。そして、さらに深くダイビングすることに決めた場合は、udacityまたはcourseraのオンラインコースにサインアップできます。

また、Clojureなどの代替言語を備えたJava仮想マシン用の他のディープラーニングフレームワークがあることを知っていることも興味深いかもしれません。(ClojureはLISPの方言であり、「人工知能」という用語を生み出したのと同じコンピューター科学者であるジョン・マッカーシーによって発明されました。 /もともとAI向けに設計されたAIの言語を使用します。ボールダーのThinkTopicとハンブルクのフライハイトは、ClojureをAIプロジェクトに使用している2つの会社です。 YouTubeビデオ「OSCON 2013:Carin Meier、The Joy of Flying Robots with Clojure」をご覧になることをお勧めします。

(+++何か間違ったことを言ったら、誰でも気軽に修正してください。+++)


Javaのフレームワークは少ないので、TensorFlowの代わりに使用できる独自のフレームワークを作成することはできますか?ありがとう
-aspire29

1
基本的な概念を研究するための独自のフレームワークを作成することは非常に良い考えです。一方、TensorFlowは巨大なコミュニティと多くの非常に才能のある専門家によって開発されています。正直なところ、自家製のフレームワークがそれとうまく競争できるとは思いません。ところで、なぜJava AIフレームワークがそんなに少ないのか、私にはわかりません。プログラミング言語とJVMはほぼどこにでもあります。AIはまだ生産というよりも研究に関するものだと思います。
akopacsi

6

微積分と線形代数の両方に、AI / ML手法に何らかの用途があることがわかります。多くの意味で、MLの大部分は線形代数に還元され、計算は例えば ニューラルネットワークをトレーニングするための逆伝播アルゴリズム。

確率と統計についても1つか2つのクラスを取るのに役立ちます。

プログラミング言語の選択はそれほど重要ではありません、IMO。AI / MLは、ほとんどすべてのメインストリーム言語で実行でき、多くの非メインストリーム言語で実行できます。最大の違いは、パフォーマンス、およびライブラリ/ツールの可用性に関係しています。たとえば、C ++は通常JavaまたはPythonよりも優れているため、「金属に近づき」、ハードウェアの機能を最大限に活用できます。ただし、Pythonには非常に優れたFFIがあり、CまたはC ++と組み合わせて使用​​されることがよくあります。Python、C ++、Java、R、Octave / Matlab、および他のいくつかの言語には、高品質のライブラリが多数用意されている傾向があります。

とは言っても、おそらくCOBOLやPL / I、RPG / 400などでML / AIを試したいとは思わないでしょう。少なくとも合理的に人気のあるものに固執します。mloss.orgをざっと見て、さまざまな言語で利用可能なライブラリ/ツールキットを調べてください。これは、選択の指針となるはずです。


5

AIに興味を持ったとき、最も基本的なことから始めました。私の最初の本はRussell&Norvigの人工知能でした-現代のアプローチでした。ディープネットに主に興味がある場合でも、ここから始めるのが良いと思います。基本的なAIの概念とアルゴリズム(エキスパートシステム、深さ優先および幅優先検索、知識表現など)だけでなく、基本的な数学(ベイジアン推論、一次論理、NL n-gramなど)も扱います。および一般的な既知の問題(たとえば、巡回セールスマンの問題)。

MLに特に興味があるので、統計を学ぶことも良い考えかもしれません。言及された本の後、あなたは次に何を学ぶべきかについても良い考えを持つべきです。

  • プログラミング言語についてはあまり気にしないでください。

プログラミング自体と関連するテクニックを理解することは、はるかに重要です。データ構造、アルゴリズム、さまざまなプログラミングパラダイム(OOP、関数型プログラミングなど)について学んでください。特定の言語だけでなく、プログラミングの背後にあるロジックを理解してください。結局のところ、プログラミングの方法を理解すれば、新しい言語を学ぶことはそれほど難しくありません(新しい言語を学ぶことは、多かれ少なかれ構文上の砂糖です)。


1
読みやすくするために少し編集し、教科書へのリンクを追加しました。良いアドバイス、特に再プログラミング言語。(「構文のある任意の言語」で作業するコーダーに注目してください:) 本当に、特定のプロジェクトまたはタスクに最も最適または便利なものになります。
デューク


3

まずAIを開始するには、AIとは何かを理解します。MNISTの精度が2012年以降急速に向上する理由。機械学習が精度を向上させるためにAIを必要とする理由。

AIを使用したApplication on Machine Learningを開始して構築するには、数学や何らかのロケット科学は必要ありませんでした。あなたは私の仲間がラッパーのようなすべての機械学習問題のショートカットを作成するのが遅れています。メソッドにデータを渡すだけで、メソッドはすべての処理を行います。MNISTの問題から始めましょう。MNISTの履歴については、基本的なアルゴリズムを使用してください。線形回帰、ロジスティック回帰、Kmean clusting、KNNを試してください。機械学習用のツールSkite learn(python lib)またはTensorflow(python lib)tflearn(ラッパーのようなTensorflowの高レベルAPI)両方ともオープンソースです。サンプルはGitHubで入手できます。GitHubで検索を開始します。あなたは素晴らしい例を見つけました。両方のライブラリ。kaggelを使用して、競合に参加する問題を解決します。

上記のアルゴリズムをすべて完了したら、エラーに集中してください。今、AIが登場しました。ニューラルネットワークがどのようにエラーを減らし、精度を高めるのに役立つかを理解してください。次に、sigmoid、relu、cnnなどの基本的なニューラルネットワークを試してください。ニューラルネットワークでドロップアウトを使用することを忘れないでください。TensorflowまたはkerasまたはTensorflowとkerasを使用できます

数学を改善するために、3つの青1ブラウンの線形代数ビデオを並べて確認してください。1日に1回、毎日1つのビデオ。

そして今、ロジック(任意のアルゴリズム)の背後にある数学に焦点を当てますあなたは機械学習のコースを試すことができます。

Tensorflowを使用して、Androidアプリ、IOSアプリ、RaspPi Check Tensorflow Dev Summit 2016/2017を構築します。

または、クラッシュコースが必要な場合は、https://youtu.be/u4alGiomYP4を確認してください


1
明確にしましょう、AIはHTMLブックを読むことだけではなく、プログラミングを開始することもできます。OPは、オックスフォード、ハーバードなどの教授に相談する必要があります
キンタムニア

3

人工知能を使用する前に、前提条件を満たしている必要があります。確固たるリストはありませんが、さまざまなアルゴリズムの十分な知識が必須です。それとは別に、C ++やJavaなどの少なくとも1つのプログラミング言語に慣れている必要があります。コンピューターサイエンスを初めて使用する場合は、人工知能に飛び込むことはお勧めしません。人工知能に飛び込む前のプログラミングの経験は、あなたにとってプラスのポイントになります。

人工知能に関する読書(ブログ、論文、学者の記事など)を開始します。それが何であるかのように、そのアプリケーション、現在のステータス、あなたが見つけることができる他のもの。Tic Tac Toe、Sudoku、Reversi(Othello)などの小さなゲームのAIコードの作成を開始します。独自のシミュレータを作成し、ルービックキューブを解決するコードを作成できます。同様に、パターン認識と機械学習のコードを作成します。学ぶことほど良いことはありません。LISPやpythonなどの言語は非常に役立ちます。ans1ans2の 2つの答えがあります

あなたが本(私のような本)を読んで学ぶのが好きな人なら、人工知能:現代のアプローチ(ピーター・ノーヴィグとスチュアート・ラッセル)を買うことができます。この本は非常に優れており、中級および上級レベルに適しています。本に記載されている運動の問題を解決してください。本のソリューションpdfはオンラインで入手できます。機械学習については、パターン認識と機械学習(Christopher M. Bishop)とプログラミングコレクティブインテリジェンス(O'Reilly)をお勧めします。

最初に、人工知能と技術的特異性に関する非常に良い記事があります。

この記事は長く、2つの部分に分かれています。人工知能を真剣に考えているなら、この記事を読むことを強くお勧めします。良い洞察が得られます。

計算理論の知識は大いに役立ちます。特に、自然言語処理の分野で作業している場合。あなたが興味を持つかもしれないAIの他のサブフィールドは、機械学習、進化的コンピューティング、遺伝的アルゴリズム、強化学習、深層学習などです。リストは続きます。統計の知識が向上すれば、人工知能にとっても優れたものになります。フォーラムやウェブサイトなどを介して、この分野の最近の動向に注目してください。オープンAI ウェブサイトも非常に優れた情報源です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.