Machine-learning-quick-guide
機械学習-はじめに
今日の人工知能(AI)は、ブロックチェーンと量子コンピューティングの誇大広告をはるかに超えています。 これは、巨大なコンピューティングリソースを一般人が簡単に利用できるためです。 開発者はこれを利用して、新しい機械学習モデルを作成し、既存のモデルを再トレーニングしてパフォーマンスと結果を改善します。 ハイパフォーマンスコンピューティング(HPC)が簡単に利用できるようになったため、機械学習スキルを持つITプロフェッショナルの需要が急増しました。
このチュートリアルでは、について詳しく学びます-
機械学習の要点は何ですか?
- 機械学習にはどのような種類がありますか?
- 機械学習モデルの開発に使用できるさまざまなアルゴリズムは何ですか?
- これらのモデルの開発に使用できるツールは何ですか?
- プログラミング言語の選択肢は何ですか?
- Machine Learningアプリケーションの開発と展開をサポートするプラットフォームは何ですか?
- どのIDE(統合開発環境)が利用可能ですか?
- この重要な分野でスキルをすばやくアップグレードするにはどうすればよいですか?
機械学習-今日のAIでできること
Facebookの写真で顔にタグを付けると、AIが舞台裏で実行され、写真で顔を識別します。 現在、顔のタグ付けは、人間の顔の写真を表示するいくつかのアプリケーションにあります。 なぜ人間の顔だけなのか? 猫、犬、ペットボトル、車などのオブジェクトを検出するアプリケーションがいくつかあります。 道路を走る自動運転車は、リアルタイムで物体を検出して車を操縦します。 旅行するときは、Google Directions を使用してリアルタイムの交通状況を学習し、その時点でGoogleによって提案された最適な経路をたどります。 これは、リアルタイムのオブジェクト検出技術のさらに別の実装です。
海外訪問中に通常使用するGoogle Translate アプリケーションの例を考えてみましょう。 モバイル上のGoogleのオンライン翻訳アプリは、外国語を話す地元の人々とのコミュニケーションに役立ちます。
現在、私たちが実際に使用しているAIのアプリケーションはいくつかあります。 実際、私たち一人一人は、知識がなくても、生活の多くの部分でAIを使用しています。 今日のAIは、非常に複雑なジョブを高い精度と速度で実行できます。 クライアント向けに現在開発しているAIアプリケーションで期待される機能を理解するための複雑なタスクの例を説明しましょう。
例
私たちは皆、毎日の通勤のために、または都市間旅行のために、市内のどこでも旅行中にGoogle Directions を使用します。 Google Directionsアプリケーションは、その時点での目的地への最速パスを提案します。 この道をたどると、Googleの提案はほぼ100%正しいことがわかり、貴重な時間を節約できます。
目的地へのパスが複数あり、アプリケーションがすべての可能なパスの交通状況を判断して、そのような各パスの移動時間を推定する必要があることを考えると、この種のアプリケーションの開発に伴う複雑さを想像できます。 また、Googleルートが世界中を網羅しているという事実を考慮してください。 間違いなく、多くのAIと機械学習の技術は、そのようなアプリケーションの内部で使用されています。
このようなアプリケーションの開発に対する継続的な需要を考慮すると、AIスキルを持つITプロフェッショナルに突然の需要がある理由を理解できます。
次の章では、AIプログラムを開発するために必要なことを学びます。
機械学習-従来のAI
AIの旅は、コンピューティングパワーが今日の何分の1かであった1950年代に始まりました。 AIは、統計学者が計算機を使用して予測を行う方法で、マシンによって行われた予測から始まりました。 したがって、最初のAI開発全体は、主に統計的手法に基づいていました。
この章では、これらの統計的手法について詳しく説明します。
統計的手法
今日のAIアプリケーションの開発は、古くからある伝統的な統計手法の使用から始まりました。 将来の価値を予測するには、学校で直線補間を使用している必要があります。 いわゆるAIプログラムの開発に成功裏に適用される統計的手法は他にもいくつかあります。 今日のAIプログラムははるかに複雑で、初期のAIプログラムで使用されている統計的手法をはるかに超える手法を使用しているため、「いわゆる」と言います。
当時のAIアプリケーションの開発に使用され、実際にまだ使用されている統計的手法の例のいくつかをここに示します-
- 回帰
- 分類
- クラスタリング
- 確率論
- 決定木
ここでは、AIが要求する広大さを恐れずにAIを使い始めるのに十分な主要なテクニックのみをリストしました。 限られたデータに基づいてAIアプリケーションを開発している場合、これらの統計的手法を使用することになります。
ただし、今日はデータが豊富です。 統計手法を所有している種類の巨大なデータを分析することは、独自の制限があるため、あまり役に立ちません。 したがって、多くの複雑な問題を解決するために、ディープラーニングなどのより高度な方法が開発されています。
このチュートリアルを進めていくと、機械学習とは何か、そのような複雑なAIアプリケーションの開発にどのように使用されるのかを理解できます。
機械学習-機械学習とは何ですか?
住宅価格とそのサイズ(sq)のプロットを示す次の図を検討してください。 ft.
XYプロットにさまざまなデータポイントをプロットした後、サイズに応じて他の家の予測を行うために最適な線を描きます。 既知のデータをマシンに供給し、最適なラインを見つけるように依頼します。 機械が最適なラインを見つけたら、既知の家のサイズ、すなわち、 上記の曲線のY値。 これで、マシンは推定X値を返します。 家の予想価格。 図を外挿して、3000平方メートルの家の価格を見つけることができます。 ft. またはさらに大きい。 これは統計の回帰と呼ばれます。 特に、この種の回帰は、XおよびYデータポイント間の関係が線形であるため、線形回帰と呼ばれます。
多くの場合、XとYのデータポイント間の関係は直線ではなく、複雑な方程式の曲線である場合があります。 ここでのタスクは、将来の値を予測するために外挿できる最適な曲線を見つけることです。 そのようなアプリケーションプロットの1つを次の図に示します。
ソース:
_https://upload.wikimedia.pediacommon/pediacwiki/pediac/common/pediac/common/wiki/pediac _
統計的最適化手法を使用して、ここで最適曲線の方程式を見つけます。 そして、これがまさに機械学習の目的です。 既知の最適化手法を使用して、問題に対する最適なソリューションを見つけます。
次に、機械学習のさまざまなカテゴリを見てみましょう。
機械学習-カテゴリー
機械学習は、次の見出しの下で広く分類されます-
上の図に示すように、機械学習は左から右に進化しました。
- 当初、研究者は教師あり学習から始めました。 これは、前述の住宅価格予測の場合です。
- これに続いて、教師なし学習が行われました。この場合、マシンは監視なしで独自に学習します。
- 科学者たちはさらに、機械が期待通りに仕事をしたときに機械に報酬を与えるのは良い考えであり、強化学習がやってきたことを発見しました。
- 非常にすぐに、最近利用可能なデータは非常に膨大になり、これまでに開発された従来の手法ではビッグデータの分析と予測の提供に失敗しました。
- このように、人間の脳がバイナリコンピューターで作成された人工ニューラルネットワーク(ANN)でシミュレートされるディープラーニングが行われました。
- マシンは、現在利用可能な高い計算能力と巨大なメモリリソースを使用して、独自に学習します。
- 現在、ディープラーニングがこれまで解決できなかった多くの問題を解決したことが確認されています。
- ディープラーニングネットワークに賞としてインセンティブを与えることで、この手法はさらに進化し、ついにディープ強化学習が登場します。
次に、これらの各カテゴリをさらに詳しく調べてみましょう。
教師あり学習
教師あり学習は、子供が歩くように訓練することに似ています。 子供が自分で歩くことを学ぶまで、子供の手を握り、足を前に出す方法を示し、デモンストレーションのために自分で歩くなどします。
回帰
同様に、教師あり学習の場合、コンピューターに具体的な既知の例を与えます。 与えられた特徴値x1の出力はy1、x2の場合はy2、x3の場合はy3などと言います。 このデータに基づいて、コンピューターにxとyの経験的関係を計算させます。
この方法で十分な数のデータポイントを使用してマシンをトレーニングしたら、マシンに特定のXのYを予測するように依頼します。 この与えられたXのYの実際の値を知っていると仮定すると、マシンの予測が正しいかどうかを推測できます。
したがって、既知のテストデータを使用して、マシンが学習したかどうかをテストします。 マシンが希望のレベルの精度(たとえば80〜90%)で予測を実行できることを確認したら、マシンのトレーニングを停止できます。
これで、マシンを安全に使用して未知のデータポイントの予測を実行したり、Yの実際の値がわからない特定のXのYを予測するようにマシンに依頼したりできます。 このトレーニングは、前に説明したリグレッションの下にあります。
分類
また、分類問題に機械学習技術を使用することもできます。 分類問題では、類似した性質のオブジェクトを単一のグループに分類します。 たとえば、100人の生徒のセットでは、身長に基づいて3つのグループ(短身、中身、長身)にグループ化することができます。 各生徒の身長を測定し、適切なグループに配置します。
これで、新しい生徒が入ってきたら、身長を測定して適切なグループに入れます。 回帰トレーニングの原則に従うことにより、マシンをトレーニングして、生徒の特徴(身長)に基づいて生徒を分類します。 マシンがグループの形成方法を学習すると、未知の新入生を正しく分類できます。 この場合も、テストデータを使用して、開発したモデルを実稼働する前に、マシンが分類の手法を学習したことを確認します。
教師あり学習は、AIが実際にその旅を始めた場所です。 この手法は、いくつかのケースで正常に適用されました。 マシンで手書き認識を行う際にこのモデルを使用しました。 教師あり学習用にいくつかのアルゴリズムが開発されています。 以下の章でそれらについて学びます。
教師なし学習
教師なし学習では、マシンにターゲット変数を指定せず、マシンに「Xについて教えてください」と尋ねます。 より具体的には、巨大なデータセットX、「Xで作成できる5つの最適なグループは何ですか?」、「Xで最も頻繁に発生する機能は?」などの質問をする場合があります。 このような質問に対する答えを得るには、戦略を推測するためにマシンが必要とするデータポイントの数が非常に多くなることを理解できます。 教師あり学習の場合、マシンは約数千のデータポイントでトレーニングできます。 ただし、教師なし学習の場合、学習のために合理的に受け入れられるデータポイントの数は数百万から始まります。 最近では、データは一般的に豊富に利用可能です。 データにはキュレーションが必要です。 ただし、ソーシャルエリアネットワークで継続的に流れるデータの量は、ほとんどの場合、データのキュレーションは不可能なタスクです。
次の図は、教師なし機械学習によって決定される黄色と赤色のドットの境界を示しています。 マシンが各黒点のクラスをかなり正確に決定できることがはっきりとわかります。
ソース:
https://chrisjmccormick.files.wordpress.com/2013/08/approx_decision_boun dary.png
教師なし学習は、顔検出、オブジェクト検出など、多くの最新のAIアプリケーションで大きな成功を収めています。
強化学習
ペットの犬を訓練することを検討してください。私たちはペットを訓練して、ボールを持ってきます。 一定の距離でボールを投げ、犬にそれを取り戻すように頼みます。 犬がこれを正しく行うたびに、私たちは犬に報酬を与えます。 ゆっくりと、犬は仕事を正しくすることで報酬が与えられることを知り、それから犬は将来毎回正しいやり方で仕事を始めます。 まさに、この概念は「強化」タイプの学習に適用されます。 この技術は当初、ゲームをプレイするマシン用に開発されました。 マシンには、ゲームの各段階で起こり得るすべての動きを分析するアルゴリズムが与えられます。 マシンは、動きの1つをランダムに選択できます。 動きが正しければ、マシンに報酬が与えられ、そうでなければペナルティーが科せられる可能性があります。 ゆっくりと、機械は正しい動きと間違った動きを区別し始め、何度か繰り返した後、より正確にゲームパズルを解くことを学びます。 マシンがますます多くのゲームをプレイするにつれて、ゲームに勝つ精度が向上します。
プロセス全体を次の図に示すことができます-
この機械学習の手法は、ラベル付きの入力/出力ペアを提供する必要がないという点で、教師あり学習とは異なります。 焦点は、新しいソリューションの探索と学習したソリューションの活用のバランスを見つけることにあります。
深層学習
深層学習は、人工ニューラルネットワーク(ANN)、より具体的には畳み込みニューラルネットワーク(CNN)に基づくモデルです。 深層ニューラルネットワーク、深層信念ネットワーク、リカレントニューラルネットワーク、畳み込みニューラルネットワークなど、深層学習で使用されるいくつかのアーキテクチャがあります。
これらのネットワークは、コンピュータービジョン、音声認識、自然言語処理、バイオインフォマティクス、薬物設計、医療画像分析、およびゲームの問題の解決にうまく適用されています。 ディープラーニングが積極的に適用される分野は他にもいくつかあります。 深層学習には膨大な処理能力と膨大なデータが必要であり、これらは一般的に最近では簡単に入手できます。
ディープラーニングについては、今後の章で詳しく説明します。
深層強化学習
深層強化学習(DRL)は、深層学習と強化学習の両方の手法を組み合わせたものです。 Qラーニングなどの強化学習アルゴリズムがディープラーニングと組み合わされて、強力なDRLモデルが作成されます。 この技術は、ロボット工学、ビデオゲーム、金融、ヘルスケアの分野で大きな成功を収めています。 DRLモデルを作成することで、以前は解決できなかった多くの問題が解決されました。 この分野では多くの研究が行われており、これは業界によって非常に積極的に追求されています。
これまで、さまざまな機械学習モデルの概要を説明してきましたが、次に、これらのモデルで使用可能なさまざまなアルゴリズムについてもう少し詳しく見てみましょう。
機械学習-監視あり
教師あり学習は、トレーニングマシンに含まれる学習の重要なモデルの1つです。 この章では、同じことについて詳しく説明します。
教師あり学習のアルゴリズム
教師あり学習にはいくつかのアルゴリズムが利用できます。 教師あり学習で広く使用されているアルゴリズムのいくつかは以下のとおりです-
- k最近傍
- 決定木
- ナイーブベイズ
- ロジスティック回帰
- サポートベクターマシン
この章で先に進む際に、各アルゴリズムについて詳しく説明します。
k最近傍
単純にkNNと呼ばれるk-Nearest Neighboursは、分類および回帰問題の解決に使用できる統計的手法です。 kNNを使用して未知のオブジェクトを分類する場合について説明します。 以下の画像に示すようにオブジェクトの分布を考慮してください-
ソース:
https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm
この図は、赤、青、緑の色でマークされた3種類のオブジェクトを示しています。 あなたが上記のデータセットでkNN分類器を実行すると、オブジェクトの各タイプの境界は以下のようにマークされます-
ソース:
https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm
ここで、赤、緑、または青として分類する新しい未知のオブジェクトを考えてみましょう。 これを次の図に示します。
視覚的に見ると、未知のデータポイントは青いオブジェクトのクラスに属します。 数学的には、この未知のポイントの距離を、データセット内の他のすべてのポイントと測定することで結論付けることができます。 そうすると、その隣人のほとんどが青色であることがわかります。 赤と緑のオブジェクトまでの平均距離は、青のオブジェクトまでの平均距離よりも確実に長くなります。 したがって、この未知のオブジェクトは、青のクラスに属するものとして分類できます。
kNNアルゴリズムは、回帰問題にも使用できます。 kNNアルゴリズムは、ほとんどのMLライブラリですぐに使用できます。
決定木
フローチャート形式の単純な決定木は以下に示されています-
このフローチャートに基づいて入力データを分類するコードを作成します。 フローチャートは自明であり、簡単です。 このシナリオでは、受信メールを分類して、いつ読むかを決定しようとしています。
実際には、決定木は大きく複雑になる可能性があります。 これらのツリーを作成およびトラバースするには、いくつかのアルゴリズムを使用できます。 機械学習マニアとして、意思決定ツリーを作成およびトラバースするこれらの手法を理解し、習得する必要があります。
ナイーブベイズ
Naive Bayesは、分類子の作成に使用されます。 フルーツバスケットからさまざまな種類の果物を整理(分類)したいとします。 果物の色、サイズ、形などの機能を使用できます。たとえば、色が赤く、形が丸く、直径が約10 cmの果物はすべてアップルと見なされます。 したがって、モデルをトレーニングするには、これらの機能を使用して、特定の機能が目的の制約に一致する確率をテストします。 次に、さまざまな機能の確率を組み合わせて、特定の果物がリンゴである確率を求めます。 Naive Bayesでは通常、分類に少数のトレーニングデータが必要です。
ロジスティック回帰
次の図をご覧ください。 XY平面内のデータポイントの分布を示しています。
図から、赤い点と緑の点の分離を視覚的に調べることができます。 これらのドットを分離するために境界線を引くことができます。 ここで、新しいデータポイントを分類するには、ポイントが線のどちら側にあるかを判断するだけです。
サポートベクターマシン
次のデータ分布を見てください。 ここでは、3つのクラスのデータを線形に分離することはできません。 境界曲線は非線形です。 そのような場合、曲線の方程式を見つけることは複雑な仕事になります。
サポートベクターマシン(SVM)は、このような状況で分離境界を決定するのに便利です。
機械学習-Scikit-learnアルゴリズム
幸いなことに、ほとんどの場合、前のレッスンで説明したアルゴリズムをコーディングする必要はありません。 これらのアルゴリズムのすぐに使える実装を提供する多くの標準ライブラリがあります。 一般的に使用されているこのようなツールキットの1つがscikit-learnです。 次の図は、このライブラリで使用できるアルゴリズムの種類を示しています。
ソース:https://scikit-learn.org/stable/tutorial/machine_learning_map/indexl
これらのアルゴリズムの使用は簡単であり、これらは十分にフィールドでテストされているため、AIアプリケーションで安全に使用できます。 これらのライブラリのほとんどは、商用目的でも無料で使用できます。
機械学習-監視なし
これまでに見てきたことは、マシンがターゲットの解決策を見つけられるようにすることです。 回帰では、マシンをトレーニングして将来の値を予測します。 分類では、定義されたカテゴリの1つにある未知のオブジェクトを分類するようにマシンをトレーニングします。 つまり、データXのYを予測できるようにマシンをトレーニングしています。 膨大なデータセットがあり、カテゴリを推定しない場合、教師あり学習を使用してマシンをトレーニングすることは困難です。 マシンが数ギガバイトとテラバイトで実行されているビッグデータを検索して分析し、このデータに非常に多くの明確なカテゴリが含まれていると言えたらどうでしょうか?
例として、投票者のデータを考えます。 各投票者からのいくつかの入力(これらはAI用語では機能と呼ばれます)を検討することで、X政党に投票する投票者が非常に多く、Yに投票する投票者が非常に多いとマシンに予測させます。 したがって、一般的には、マシンに膨大なデータポイントXのセットを与えて、「Xについて教えていただけますか?」 または、「Xから作成できる5つの最高のグループは何ですか?」などの質問かもしれません。 または、「Xで最も頻繁に発生する3つの機能は何ですか?」のようにもなります。
これがまさに、教師なし学習のすべてです。
教師なし学習のアルゴリズム
ここで、教師なし機械学習の分類に広く使用されているアルゴリズムの1つについて説明します。
k-meansクラスタリング
米国の2000年と2004年の大統領選挙は近かった-非常に近い。 候補者が受け取った人気投票の最大の割合は50.7%で、最低は47.9%でした。 有権者の一部が陣営を変えたとしたら、選挙の結果は異なっていただろう。 少数の有権者グループがいて、適切にアピールした場合、陣営を切り替えます。 これらのグループは巨大ではないかもしれませんが、そのような緊密な競争で、彼らは選挙の結果を変えるのに十分なほど大きいかもしれません。 これらの人々のグループをどうやって見つけますか? 限られた予算で彼らにどのようにアピールしますか? 答えはクラスタリングです。
それがどのように行われるかを理解しましょう。
- まず、同意の有無にかかわらず、人々に関する情報を収集します。彼らにとって重要なことや投票方法に影響を与えるものについての手がかりを与える可能性のあるあらゆる種類の情報です。
- 次に、この情報を何らかのクラスタリングアルゴリズムに入れます。
- 次に、各クラスター(最初に最大のクラスターを選択するのが賢明でしょう)に対して、これらの投票者にアピールするメッセージを作成します。
- 最後に、キャンペーンを配信し、それが機能しているかどうかを測定します。
クラスタリングは、類似したもののクラスターを自動的に形成する教師なし学習の一種です。 自動分類のようなものです。 ほとんど何でもクラスタ化でき、クラスタ内のアイテムが類似しているほど、クラスタはより良くなります。 この章では、k-meansと呼ばれるクラスタリングアルゴリズムの1つのタイプを学習します。 「k」個の一意のクラスターを検出し、各クラスターの中心がそのクラスターの値の平均であるため、k-meansと呼ばれます。
クラスター識別
クラスター識別は、アルゴリズムに「ここにいくつかのデータがあります。 分類との主な違いは、分類では何を探しているかを知っているということです。 クラスタリングの場合はそうではありませんが。
クラスタリングは、事前定義されたクラスを持たずに分類と同じ結果を生成するため、教師なし分類と呼ばれることもあります。
現在、教師あり学習と教師なし学習の両方に満足しています。 残りの機械学習カテゴリを理解するには、最初に次の章で学習する人工ニューラルネットワーク(ANN)を理解する必要があります。
機械学習-人工ニューラルネットワーク
人工ニューラルネットワークのアイデアは、人間の脳のニューラルネットワークから派生しました。 人間の脳は本当に複雑です。 科学者とエンジニアは、脳を注意深く研究して、バイナリコンピュータのデジタル世界に適合するアーキテクチャを思い付きました。 そのような典型的なアーキテクチャの1つを以下の図に示します-
外界からデータを収集するための多くのセンサーを備えた入力レイヤーがあります。 右側には、ネットワークによって予測された結果を提供する出力レイヤーがあります。 これら2つの間に、いくつかのレイヤーが隠されています。 レイヤーを追加するごとに、ネットワークのトレーニングがさらに複雑になりますが、ほとんどの状況でより良い結果が得られます。 設計されたいくつかのタイプのアーキテクチャがありますが、ここで説明します。
ANNアーキテクチャ
次の図は、一定期間にわたって開発され、現在実用化されているいくつかのANNアーキテクチャを示しています。
ソース:
https://towardsdatascience.com/the-mostly-complete-chart-of-neural-networks-explained -3fb6f2367464
各アーキテクチャは、特定の種類のアプリケーション向けに開発されています。 したがって、機械学習アプリケーションにニューラルネットワークを使用する場合、既存のアーキテクチャのいずれかを使用するか、独自のアーキテクチャを設計する必要があります。 最終的に決定するアプリケーションのタイプは、アプリケーションのニーズによって異なります。 特定のネットワークアーキテクチャを使用するように指示するガイドラインはありません。
機械学習-ディープラーニング
ディープラーニングはANNを使用します。 最初に、そのパワーのアイデアを提供するディープラーニングアプリケーションをいくつか見ていきます。
アプリケーション
ディープラーニングは、機械学習アプリケーションのいくつかの分野で多くの成功を収めています。
自動運転車-自動運転の自動運転車はディープラーニング技術を使用します。 彼らは通常、絶えず変化する交通状況に適応し、一定期間の運転がますます良くなります。
音声認識-ディープラーニングのもう1つの興味深いアプリケーションは音声認識です。 今日、私たちは皆、音声を認識できる複数のモバイルアプリを使用しています。 AppleのSiri、AmazonのAlexa、MicrosoftのCortena、およびGoogleのアシスタント–これらはすべてディープラーニングテクニックを使用しています。
モバイルアプリ-写真を整理するために、いくつかのウェブベースおよびモバイルアプリを使用しています。 顔検出、顔ID、顔のタグ付け、画像内のオブジェクトの識別-これらはすべてディープラーニングを使用します。
ディープラーニングの未開拓の機会
ディープラーニングアプリケーションが多くのドメインで達成した大きな成功を見て、人々は機械学習がこれまで適用されていなかった他のドメインを探索し始めました。 ディープラーニング技術が正常に適用されるいくつかのドメインがあり、悪用される可能性のある他の多くのドメインがあります。 これらのいくつかをここで説明します。
- 農業は、人々がディープラーニング技術を適用して作物の収穫量を改善できるような産業の1つです。
- 消費者金融は、機械学習が詐欺の早期発見と顧客の支払い能力の分析に大いに役立つ別の分野です。
- ディープラーニングテクニックは、新薬を作成し、患者にパーソナライズされた処方箋を提供するために、医学の分野にも適用されます。
可能性は無限であり、新しいアイデアや開発が頻繁に出現するのを常に見続ける必要があります。
ディープラーニングを使用してより多くを達成するために必要なもの
ディープラーニングを使用するには、スーパーコンピューティングのパワーが必須要件です。 ディープラーニングモデルを開発するには、メモリとCPUの両方が必要です。 幸いなことに、今日では、HPC –ハイパフォーマンスコンピューティングを簡単に利用できます。 このため、上記のディープラーニングアプリケーションの開発が今日現実になり、将来的には、先ほど説明した未開発の領域でアプリケーションを見ることができます。
ここで、機械学習アプリケーションで使用する前に考慮する必要があるディープラーニングの制限のいくつかを見ていきます。
深層学習の欠点
ディープラーニングを使用する前に考慮する必要がある重要なポイントの一部を以下に示します-
- ブラックボックスアプローチ
- 開発期間
- データ量
- 計算的に高価
次に、これらの制限のそれぞれについて詳細に検討します。
ブラックボックスアプローチ
ANNはブラックボックスのようなものです。 特定の入力を与えると、特定の出力を提供します。 次の図は、そのようなアプリケーションの1つを示しています。このアプリケーションでは、動物の画像をニューラルネットワークにフィードし、画像が犬のものであることを示しています。
これがブラックボックスアプローチと呼ばれる理由は、ネットワークが特定の結果を出した理由がわからないためです。 あなたは、ネットワークがそれが犬であると結論付けた方法を知りませんか? ここで、銀行がクライアントの信用度を決定したい銀行アプリケーションを考えてみましょう。 ネットワークは間違いなくこの質問に対する答えを提供します。 ただし、クライアントに正当化することはできますか? 銀行は、ローンが認可されない理由を顧客に説明する必要がありますか?
開発期間
ニューラルネットワークを訓練するプロセスは、以下の図に描かれています-
最初に、解決する問題を定義し、その仕様を作成し、入力機能を決定し、ネットワークを設計し、展開して出力をテストします。 出力が期待どおりでない場合は、これをフィードバックとして受け取って、ネットワークを再構築してください。 これは反復的なプロセスであり、目的の出力を生成するためにタイムネットワークが完全にトレーニングされるまで、数回の反復が必要になる場合があります。
データ量
ディープラーニングネットワークは通常、トレーニングに膨大な量のデータを必要としますが、従来の機械学習アルゴリズムはわずか数千のデータポイントでも大成功で使用できます。 幸いなことに、データ量は年間40%で成長しており、CPU処理能力は以下の図に示すように年間20%で成長しています-
計算的に高価
ニューラルネットワークのトレーニングには、従来のアルゴリズムの実行に必要な計算能力の数倍の計算能力が必要です。 ディープニューラルネットワークのトレーニングを成功させるには、数週間のトレーニング時間が必要になる場合があります。
これとは対照的に、従来の機械学習アルゴリズムはトレーニングに数分/時間しかかかりません。 また、ディープニューラルネットワークのトレーニングに必要な計算能力は、データのサイズとネットワークの深さと複雑さに大きく依存しますか?
機械学習とは何か、その機能、制限、およびアプリケーションの概要を確認した後、「機械学習」の学習に取り掛かりましょう。
機械学習-スキル
機械学習の幅は非常に広く、複数のドメインにわたるスキルが必要です。 機械学習の専門家になるために取得する必要があるスキルは以下のとおりです-
- 統計
- 確率論
- 微積分
- 最適化手法
- 可視化
機械学習のさまざまなスキルの必要性
どのスキルを習得する必要があるかについて簡単に説明するために、いくつかの例を議論しましょう-
数学表記
機械学習アルゴリズムのほとんどは、数学に大きく基づいています。 あなたが知る必要がある数学のレベルは、おそらく初心者レベルです。 重要なのは、数学者が自分の方程式で使用する表記法を読むことができることです。 たとえば、表記法を読み、その意味を理解できれば、機械学習を学習する準備ができています。 そうでない場合は、数学の知識を磨く必要があるかもしれません。
$$ f _ \ {AN}(net- \ theta)= \ begin \ {cases} \ gamma&if \:net- \ theta \ geq \ epsilon \\ net- \ theta&if-\ epsilon <net- \ theta
\ displaystyle \\\ max \ limits _ \ {\ alpha} \ begin \ {bmatrix} \ displaystyle \ sum \ limits _ \ {i = 1} ^ m \ alpha- \ frac \ {1} \ {2} \ displaystyle \ sum \ limits _ \ {i、j = 1} ^ m label ^ \ left(\ begin \ {array} \ {c} i \\ \ end \ {array} \ right)\ cdot \:label ^ \ left( \ begin \ {array} \ {c} j \\ \ end \ {array} \ right)\ cdot \:a _ \ {i} \ cdot \:a _ \ {j} \ langle x ^ \ left(\ begin \ {array} \ {c} i \\ \ end \ {array} \ right)、x ^ \ left(\ begin \ {array} \ {c} j \\ \ end \ {array} \ right)\ rangle \ end \ {bmatrix}
f _ \ {AN}(net- \ theta)= \ left(\ frac \ {e ^ \ {\ lambda(net- \ theta)}-e ^ \ {-\ lambda(net- \ theta)}} \ {e ^ \ {\ lambda(net- \ theta)} + e ^ \ {-\ lambda(net- \ theta)}} \ right)\;
確率論
確率論に関する現在の知識をテストする例を次に示します。条件付き確率による分類。
p(c _ \ {i} | x、y)\; = \ frac \ {p(x、y | c _ \ {i})\; p(c _ \ {i})\;} \ {p( x、y)\;}
これらの定義を使用して、ベイジアン分類ルールを定義できます-
- P(c1 | x、y)> P(c2 | x、y)の場合、クラスはc1です。
- P(c1 | x、y)<P(c2 | x、y)の場合、クラスはc2です。
最適化の問題
これが最適化関数です
\ displaystyle \\\ max \ limits _ \ {\ alpha} \ begin \ {bmatrix} \ displaystyle \ sum \ limits _ \ {i = 1} ^ m \ alpha- \ frac \ {1} \ {2} \ displaystyle \ sum \ limits _ \ {i、j = 1} ^ m label ^ \ left(\ begin \ {array} \ {c} i \\ \ end \ {array} \ right)\ cdot \:label ^ \ left( \ begin \ {array} \ {c} j \\ \ end \ {array} \ right)\ cdot \:a _ \ {i} \ cdot \:a _ \ {j} \ langle x ^ \ left(\ begin \ {array} \ {c} i \\ \ end \ {array} \ right)、x ^ \ left(\ begin \ {array} \ {c} j \\ \ end \ {array} \ right)\ rangle \ end \ {bmatrix}
次の制約の対象-
\ alpha \ geq0、および\:\ displaystyle \ sum \ limits _ \ {i-1} ^ m \ alpha _ \ {i} \ cdot \:label ^ \ left(\ begin \ {array} \ {c} i \\ \ end \ {array} \ right)= 0
上記を読んで理解することができれば、準備完了です。
可視化
多くの場合、データ分布を理解し、アルゴリズムの出力結果を解釈するには、さまざまな種類の視覚化プロットを理解する必要があります。
機械学習の上記の理論的側面に加えて、これらのアルゴリズムをコーディングするには優れたプログラミングスキルが必要です。
MLを実装するには何が必要ですか? 次の章でこれを見ていきましょう。
機械学習-実装
MLアプリケーションを開発するには、開発用のプラットフォーム、IDE、および言語を決定する必要があります。 いくつかの選択肢があります。 これらのすべてがこれまでに説明したAIアルゴリズムの実装を提供するため、これらのほとんどは簡単に要件を満たします。
あなたが自分でMLアルゴリズムを開発している場合、次の側面を慎重に理解する必要があります-
選択した言語-これは基本的に、ML開発でサポートされている言語の1つに習熟していることです。
使用するIDE-これは、既存のIDEの知識と快適さのレベルに依存します。
開発プラットフォーム-開発および展開に使用できるプラットフォームがいくつかあります。 これらのほとんどは無料で使用できます。 場合によっては、一定の使用量を超えるライセンス料が発生する場合があります。 すぐに参照できる言語、IDE、およびプラットフォームの簡単なリストを以下に示します。
言語選択
ML開発をサポートする言語のリストは次のとおりです-
- Python
- R
- Matlab
- オクターブ
- ジュリア
- C++
- C
このリストは本質的に包括的なものではありません。ただし、機械学習の開発で使用される一般的な言語の多くを網羅しています。 快適度に応じて、開発用の言語を選択し、モデルを開発してテストします。
IDEs
ML開発をサポートするIDEのリストは次のとおりです-
- Rスタジオ
- ピチャーム
- iPython/Jupyterノートブック
- ジュリア
- スパイダー
- アナコンダ
- ロデオ
- Google –Colab
上記のリストは本質的に包括的なものではありません。 それぞれに長所と短所があります。 読者は、単一のIDEに絞り込む前に、これらの異なるIDEを試すことをお勧めします。
プラットフォーム
MLアプリケーションをデプロイできるプラットフォームのリストは次のとおりです-
- IBM
- マイクロソフトアズール
- Google Cloud
- アマゾン
- Mlflow
このリストも網羅的ではありません。 読者は、上記のサービスにサインアップして、自分で試してみることをお勧めします。
機械学習-結論
このチュートリアルでは、機械学習を紹介しました。 機械学習は、平均的な人間よりも少し速く、優れているとはいえ、人間の脳ができる活動を実行するための機械を訓練する手法であることをご存じでしょう。 今日、私たちは、チェス、AlphaGOなどの非常に複雑なゲームで、マシンが人間のチャンピオンを倒せることを見てきました。 機械は、いくつかの分野で人間の活動を実行するように訓練でき、人間がより良い生活を送るのを支援できることがわかりました。
機械学習は、教師ありまたは教師なしにできます。 トレーニング用のデータ量が少なく、明確にラベル付けされたデータがある場合は、教師あり学習を選択してください。 一般に、教師なし学習は、大きなデータセットのパフォーマンスと結果を向上させます。 簡単に利用できる膨大なデータセットがある場合は、ディープラーニングテクニックをお試しください。 また、強化学習と深層強化学習も学習しました。 これで、ニューラルネットワークとは何か、そのアプリケーションと制限がわかりました。
最後に、独自の機械学習モデルの開発に関しては、さまざまな開発言語、IDE、およびプラットフォームの選択肢を検討しました。 次に行う必要があるのは、各機械学習手法の学習と練習の開始です。 主題は広大で、幅があることを意味しますが、深さを考慮すると、各トピックを数時間で学習できます。 各トピックは互いに独立しています。 一度に1つのトピックを考慮し、それを学習し、実践し、自分の言語を選択してアルゴリズムを実装する必要があります。 これは、機械学習の学習を開始するための最良の方法です。 一度に1つのトピックを練習すると、すぐに機械学習の専門家が最終的に必要とする幅を身に付けることができます。
がんばろう!