Deep Learning
2018.02.06 AI Robotics Deep Learning
KerasとTensorflowでGPUを使用すると、処理速度が大幅に向上します。 このビデオは、CPUで1時間以上かかるものが、GPUでは、数分で完了します。 このビデオは、ワシントン大学セントルイスでハイブリッド形式で教えられるコースの一部です。 しかし、すべての情報はオンラインで、簡単にフォローできます。 T81-558:セントルイスのワシントン大学におけるディープラーニングの応用例です。

高水準のインタフェースを使用して、深層学習モデルを設計し、訓練する。 プログラミング言語、プラットフォーム、およびターゲットアプリケーションの選択に基づいてニーズに最適な深層学 習フレームワークを選択する。
Prev Play Next
はじめに ⇩
記事 ⇩
DOC ⇩
GitHub ⇩
RESOURCE ⇩
初期設定 ⇩
基礎 ⇩
応用 ⇩
実用 ⇩
はじめに
はじめに ⇩
用語 ⇩
参考 ⇩
ちょいメモ ⇩
はじめに
深層学習(Deep Learning)とは、機械学習の1種である「ニューラルネットワーク(Neural Network)」の階層を深めたアル ゴリズムです。
分散深層強化学習でロボット制御 | Preferred Research ・ ConvNetJS Deep Q Learning Demo ・ ChainerでやってみるDeep Q Learning - 立ち上げ編 * Chachay/DeepQNetworkTest ・ ライントレーサーをDeep Q Learningで教育する * DeepQNetworkTest/DQN003.py ・ [V-REP] Pythonでライントレーサーをシミュレーション
用語
・ DNN Deep Neural Network ・ TensorFlow Google 社によりオープンソース化された深層学習フレームワーク ・ DeepLearning キャスレーコンサルティング DeepLearning用フレームワーク Chainer を試してみた_その1 ・Deep Learning とは、人間の学習メカニズムをモデル化した人工知能による機械学習のこと ・Deep(多層構造)によりLearning(学習)の精度を高めることがこのワードの由来となっている ・ Chainer DeepLearning用フレームワーク ・ センサフュージョン ミリ波レーダやカメラなど複数のデータを統合的に処理することで 単一のセンサからは得られない高度な認識機能を実現する手法 ・ NumPy Pythonの数値計算ライブラリ
参考
以下 10時間でChainerの基本を身につける による
以下 10時間でChainerの基本を身につける による
学習のポイント ニューラルネットの実装に必要な要素をつかむこと ・ニューラルネットの種類 ・分析対象ごとの手法の特徴の違い ・活性化関数や最適化の種類 ・脳の働きとニューラルネットの類似点 実装を試す(2時間) ・ライブラリーを使わずにPythonでニューラルネットワークを構築してみる 以下が判ればよい ・モデルを作ること ・フォワードや最適化が必要なこと ・どんな変数が必要か 実際にchainerを試す(4時間) ・【機械学習】ディープラーニング フレームワークChainerを試しながら解説してみる ・画像判定はせず irisのSpecies判定にコードを書き換えて勉強する ・元記事だと理解し難いので必要最小限のコードのみ抜き出す ・元記事だと結構話があちこちに飛んで、理解し難いので 必要最小限のコードのみ抜き出します。 ・以下のコメントの部分だけを抜き出して理解する 次に各種パラメーターの定義・設定を行います。 データセットを学習用データ検証用データに分割します。 いよいよモデルの定義です。ここからが本番ですね。Chainerのクラスや関数を使います。 順伝播の構造が下記のforward()関数で定義されます。 ここでは最適化手法としてAdamが使われています。 以上の準備から、ミニバッチ学習で手書き数字の判別を実施し、その精度を見ていきます。 ・以上でモデルの作り方 最適化の部分でchainerの便利さが分かるはず ・irisのデータを読み込んで学習するようにコードを書き換える 入力層の数 出力層の数 データ取り込みとnumpy.arrayの変換 ・動かしてみる ・エラー対策 目的変数yの中身を、数値0,1,2に変換しておかないと後続作業でエラーになる 説明変数yのnumpy.arrayを.astype(np.int32)で変換しないとエラーになる 説明変数xのnumpy.arrayを.astype(np.float32)で変換しないとエラーになる 動いたら ・パラメータを変えて遊んでみる ・学習後のモデルを予測に使ってみる ・モデルをpickleでファイルに永続化 実装してみる ・予測する際にはforwardを呼び出しみる ・自力で以下ができればよし ・基本実装 ・学習データの用意の仕方 ・変えられるパラメータの理解 ・予測の方法 課題設定 ・CNN,AutoEncoder,RNNなどを実装してみる ・画像処理、音声処理、自然言語処理なんかのやり方を覚えて、そこにディープラーニングを使ってみる ・chainerのドキュメントを見て、もう少し詳しくなってみる ・TensorFlowやCaffeを試してみる ・数学とか理論の辺りをきちんと勉強 チューニングできるようにする (Adamとかの勉強はここですればいい)
ちょいメモ
numpyのメソッド メソッド 機能 np.random.randn 乱数をつくる np.sqrt ルートをとる np.zeros 空配列の作成 np.array.dot 内積を計算 np.array.T 転置する np.sum 指定方向へのsum np.tanh tanhを計算する np.exp 指数関数
記事
やさしい深層学習の原理 ⇩
Deep Learningによる一般物体検出アルゴリズムの紹介 ⇩
以下「やさしい深層学習の原理」による
ニューラルネットワークは、「入力層」、「隠れ層」、「出力層」と各層を持ち、各層は複数の「ノード(もしくはユニ ット)」が「エッジ」で結ばれる構造となっています。 この隠れ層は複数の層を持つことができ、特に深い隠れ層を持つものを深層学習(ディープラーニング)と呼んでいま す。 各層は「活性化関数」と呼ばれる関数を持ち、エッジは「重み」を持つことができます。 そして各ノードの値は、そのノードと接続する前の層のノードの値から計算します。 すなわち、前の層のノードの値、接続エッジの重みの値、そして層が持つ活性化関数から計算します。 この計算方法には様々な種類があります。
どうしてこのニューラルネットワークで、物体認識などが実現できるのか 画像認識で実績のある「CNN(Convolution Neural Network)」を例に、概念だけを説明します。
CNNでは、上図のように隠れ層は「畳み込み層」と「プーリング層」で構成されます。 畳み込み層は、前の層で近くにあるノードにフィルタ処理して「特徴マップ」を得ます。 プーリング層は、畳込み層から出力された特徴マップを、さらに縮小して新たな特徴マップとします。 この際に着目する領域のどの値を用いるかですが、上図のように最大値を得ることで、画像の多少のずれも吸 収されます。 したがって、この処理により画像の位置移動に対する普遍性を獲得したことになります。 畳み込み層は画像の局所的な特徴を抽出し、プーリング層は局所的な特徴をまとめあげる処理をしています。 つまり、これらの処理の意味するところは、入力画像の特徴を維持しながら画像を縮小処理していることにな ります。 今までの画像縮小処理と異なるところは、画像の特徴を維持しながら画像の持つ情報量を大幅に圧縮できる ところだと思います。 これを言い換えると、画像の「抽象化」とも言えます。これは画期的なことだと思っています。 ネットワークに記憶された、この抽象化された画像イメージを用いて、入力される画像を認識、つまり画像の 分類をすることができるのです。
このCNN以外にも、深層学習・ディープラーニングには「AutoEncoder」や「RNN(Recurrent Neural Network)」があり ます。
Deep Learningによる一般物体検出アルゴリズムの紹介
コンピュータビジョンの分野において、一般物体検出とは、ある画像の中から定められた物体の位置とカテゴリー(クラス) を検出することを指します。
Doc
Jeff Heaton : T81-558:Applications of Deep Neural Networks
Course Description コースの説明
Jeff Heaton : T81-558:Applications of Deep Neural Networks
Course Description コースの説明
ディープラーニングは、ニューラルネットワークのためのエキサイティングな新技術のグループです。 高度なトレーニング技術とニューラルネットワークのアーキテクチャコンポーネントを組み合わせることで、はるかに複雑 なニューラルネットワークを作成することが可能になりました。 深層学習は、ニューラルネットワークが人間の脳の機能のような方法で情報の階層を学ぶことを可能にする。 このコースでは、畳み込みニューラルネットワーク(CNN)、ロング短期記憶(LSTM)を用いた時系列分析、古典的ニューラ ルネットワーク構造、コンピュータセキュリティへの応用を用いて、学生にコンピュータビジョンを紹介する。 ハイパフォーマンスコンピューティング(HPC)の側面は、グリッドと同様にグラフィカルプロセッシングユニット(GPU) の両方でいかに深層ラーニングを活用できるかを示します。 焦点は、数学的基礎を紹介しながら、主に問題への深層学習の応用にある。 学生は、Pythonプログラミング言語を使用して、Google TensorFlowとKerasを使用して詳細な学習を実装します。 このコースの前にPythonを知る必要はありません。しかし、少なくとも1つのプログラミング言語に精通していることが前 提です。 このコースは、教室とオンラインの両方の指導を含むハイブリッド形式で提供されます。 このコースは、教室とオンラインの両方でハイブリッド形式で提供されます。 クラス最高のミーティングは1/22、2/12、3/5、4/9に開催されます。
GitHub
jeffheaton/t81_558_deep_learning README ⇩ assignments ⇩ datasets ⇩ t81_558_class.ipynb ⇩
jeffs_helpful.ipynb ⇩ t81_558_reference.ipynb ⇩ tf_kdd99.ipynb ⇩ tf_versions.md ⇩
jeffheaton/t81_558_deep_learning README ⇩ assignments ⇩ datasets ⇩ t81_558_class.ipynb ⇩
jeffs_helpful.ipynb ⇩ t81_558_reference.ipynb ⇩ tf_kdd99.ipynb ⇩ tf_versions.md ⇩
README
T81 558:Applications of Deep Neural Networks
T81 558:Applications of Deep Neural Networks
T81 558:ディープニューラルネットワークの応用 セントルイスのワシントン大学 インストラクター:Jeff Heaton 2018年春、月曜日、オンライン、クラスルーム:Cupples II / L001Course Description コースの説明
ディープラーニングは、ニューラルネットワークのためのエキサイティングな新技術のグループです。 高度なトレーニング技術とニューラルネットワークのアーキテクチャコンポーネントを組み合わせることで、はるかに複雑 なニューラルネットワークを作成することが可能になりました。 深層学習は、ニューラルネットワークが人間の脳の機能のような方法で情報の階層を学ぶことを可能にする。 このコースでは、畳み込みニューラルネットワーク(CNN)、ロング短期記憶(LSTM)を用いた時系列分析、古典的ニュー ラルネットワーク構造、コンピュータセキュリティへの応用を用いて、学生にコンピュータビジョンを紹介する。 ハイパフォーマンスコンピューティング(HPC)の側面は、グリッドと同様にグラフィカルプロセッシングユニット(GPU) の両方でいかに深いラーニングを活用できるかを示します。 焦点は、数学的基礎を紹介しながら、主に問題への深層学習の応用にある。 学生は、Pythonプログラミング言語を使用して、Google TensorFlowとKerasを使用して詳細な学習を実装します。 このコースの前にPythonを知る必要はありません。 しかし、少なくとも1つのプログラミング言語に精通していることが前提です。 このコースは、教室とオンラインの両方の指導を含むハイブリッド形式で提供されます。Objectives 目標
ニューラルネットワーク(他のものとの違い)が他の機械学習モデルとどのように比較されるかを説明します。 ディープニューラルネットワークがいつ特定の問題に適しているかを判断する。 GitHubにアップロードされた最終的なプロジェクトを通じて、その資料の理解を示してください。Syllabus シラバス
このシラバスは、予定されているクラススケジュール、期日、および読書課題を提示します。 現在のシラバスをダウンロードしてください。Datasets データセットモジュール & コンテンツ モジュール1 Python Preliminaries モジュール2 機械学習のためのPython Module 1 Assignment モジュール3 ニューラルネットワークのためのTensorFlowとKeras Module 2: Assignment モジュール4 ニューラルネットワークのトレーニング Module 3 Assignment モジュール5 分類と回帰 Module 4 Assignment モジュール6 バックプロパゲーションとその他のトレーニングテクニック Module 5 Assignment モジュール7 畳み込みニューラルネットワークとコンピュータビジョン Module 6 Assignment due モジュール8 Kaggleと高度なデータセット Module 7 Assignment モジュール9 正則化と脱落 Module 8 Assignment モジュール10 時系列とLSTM / GRUネットワーク Module 9 Assignment モジュール11 自然言語処理 Module 10 Assignment モジュール12 セキュリティと深層学習 モジュール13 高度な/新しい深層学習のトピック モジュール14 GPU、HPC、クラウド
Iris - 3つの虹彩の種を分類します。 Auto MPG - MPGを決定する回帰。 WC Breast Cancer - バイナリ分類:悪性または良性。 toy1 - toy1データセット、幾何学的ソリッドの重みの回帰。Assignments
Coming soon.Other Information その他の情報
Helpful Functions 便利な関数 - このクラスの役に立つPython関数。 KDD99 Example - KDD99の例 Care and Feeding of Python Pythonのケアとフィード - ローカルPythonのインストールに便利なコマンドです。 Data Scientist Workbenchを使用している場合は不要です。
assignments
assignment_yourname_class1.ipynb Adding assignments for new semester, just outline, more to come. assignment_yourname_class2.ipynb fix typo assignment_yourname_class3.ipynb Added clarification. assignment_yourname_class4.ipynb Update assignment 4 assignment_yourname_class5.ipynb Updated assignments 2-6 assignment_yourname_class6.ipynb Updated assignments 2-6 assignment_yourname_class7.ipynb Added info for assignment 7. assignment_yourname_class8.ipynb Added assignment 9 assignment_yourname_class9.ipynb Updates for class videos. Also removed extra line from assignment #9. assignment_yourname_class10.ipynb Assignment 10
datasets
datasets_iris.ipynb More updates for tomorrow's first class session. datasets_mpg.ipynb Adding datasets datasets_toy1.ipynb Adding datasets datasets_wcbc.ipynb small changes from recordings
t81_558_class.ipynb
t81_558_class1_intro_python.ipynb Added link to Class #1 recording. t81_558_class2_python_ml.ipynb Added link to Class #1 recording. t81_558_class3_tensor_flow.ipynb Updates for class videos. Also removed extra line from assignment #9. t81_558_class4_training.ipynb Updates for class videos. Also removed extra line from assignment #9. t81_558_class5_class_reg.ipynb Added links for all 10 assignments. t81_558_class6_backpropagation.ipynb Added links for all 10 assignments. t81_558_class7_cnn.ipynb Added links for all 10 assignments. t81_558_class8_kaggle.ipynb Added links for all 10 assignments. t81_558_class9_regularization.ipynb Added links for all 10 assignments.t81_558_class1 0_lstm.ipynb Assignment 10 12 days ago t81_558_class11_text_nlp.ipynb Updating to latest keras/tf t81_558_class12_security.ipynb Updating to latest keras/tf t81_558_class13_adv.ipynb More updates for lastest TF t81_558_class14_aws.ipynb Updating to latest keras/tf
RESOURCE
heaton_et_al_ijcnn_2017-pre.pdf - Add preview PDF of upcoming paper. ⇩
t81_558_spring2018_syllabus.pdf - Update syllabus ⇩
heaton_et_al_ijcnn_2017-pre.pdf - Add preview PDF of upcoming paper. ⇩
t81_558_spring2018_syllabus.pdf - Update syllabus ⇩
heaton_et_al_ijcnn_2017-pre.pdf
TensorFlowの早期安定化機能の重要性 ディープニューラルネットワーク Jeff Heaton、Steven McElwee、&James Cannady、Ph.D. エンジニアリング・コンピューティング・カレッジ ノバサウスイースタン大学 フロリダ州フォートローダーデール要約
特徴の重要性は、機械学習モデルの特徴ベクトルの個々の要素が、そのモデルの精度に対する相対的重要度でランク付け されるプロセスである。 いくつかの特徴ランク付けアルゴリズムは、GarsonおよびGohのニューラルネットワーク重みベース特徴ランク付けアルゴリ ズムのような、単一のモデルタイプに特有のものである。 他の特徴ランキングアルゴリズムは、Briemanの摂動特徴ランク付けアルゴリズムなどのモデルに依存しないアルゴリズム である。 このペーパーでは、GoogleのTensorFlow Deep Learningフレームワークのニューラルネットワークの重みベースおよび摂 動のランキングアルゴリズムの両方の実装について説明します。 さらに、この論文では、深いニューラルネットワークの訓練エポックでより早い時期に特徴の安定したランキングを生成 する、これらの2つの特徴ランク付けアルゴリズムの新規のハイブリッド手法を紹介する。 特徴ランクの以前の安定化は、特徴ベクトルの多くの表現が比較されなければならないモデル探索および特徴工学の間の かなりの計算サイクルを節約することができる。 本論文では、ハイブリッド重み摂動アルゴリズムが確立されたアルゴリズムよりも早期の安定性を達成することを経験的に 示すことにより、3つのアルゴリズムすべてを実証する。I.はじめに
ニューラルネットワークへの最も重要な入力 変数を認識して優先順位を付ける能力は、長年の研究の焦点であった。 効果的な特徴選択技術から得られる性能上の利点は、ニューラルネットワークの訓練および分類の前に適用されるとき、学 習速度を改善し、学習者をより一般化し、データの表現を単純化することが分かっているため、 [1]。 しかしながら、これらの技術は、新興のディープ・ラーニング技術において最大の可能性を実現するにはまだ至っていな い。 本稿では、TensorFlow [2]に基づいて、部分訓練された深層ニューラルネットワークから、妥当な安定した特徴を評価する 方法の開発について述べる。 この論文では、この分野の先行研究の概要、機能の重要性の方法の説明、TensorFlowを使用して行われた一連の評価の 結果についての議論が含まれています。 この論文の主な貢献は、確立されたアルゴリズムより早く安定するディープニューラルネットワークのための新しいハイブ リッド特徴選択とランキングアルゴリズムの開発です。 この論文の第2の貢献は、新しいハイブリッドフィーチャ選択アルゴリズムに加えて、ラッパーベース、フィルタベース、 埋め込みフィーチャ選択を含むTesnorFlow用のツールキットの開発です。II. バックグラウンド
特徴選択アルゴリズムは、ラッパー、フィルター、埋め込み、ハイブリッドの4つのカテゴリーに分類することができる。 [3]。 これらのアルゴリズムのそれぞれは、アプリケーションごとに異なる利点を提供し、さまざまなアルゴリズムを使用して実 装できます。 このホワイトペーパーでは、これらの機能選択方法のそれぞれを代表し、重要性機能を含むアルゴリズムに焦点を当てま す。 具体的には、次のとおりです。 入力摂動特徴重要度、相関係数特徴重要度、重み分析特徴重要度、及びハイブリッドアルゴリズムを含む。A.入力摂動機能の重要性
ラッパーベースのフィーチャー選択メソッドは、単一のフィーチャーの有用性を評価するためにメトリックを使用するフ ィルターベースのフィーチャー選択アルゴリズム[4]とは対照的に、学習アルゴリズムを使用してフィーチャーのサブセット の良さを検証します。 このプロセスは、特徴の最適なランク付けが生成されたときに終了する。 ラッパー選択メソッドは、サブセットが絶えず評価されている検索アルゴリズムを使用して、データセットを通じて可能な 機能を検索します。 フィーチャ選択の学習アルゴリズムを使用することにより、ラッパーメソッドはフィルタメソッドよりも精度が高くなりま す。 ラッパーベースのアルゴリズムの主な欠点は、学習アルゴリズムのオーバーフィットの可能性に加えて、重要な計算リソ ースに対する要件である[5]。 入力摂動特徴重要度アルゴリズムのようなラッパーアルゴリズムは、ニューラルネットワークとデータセットの両方を利用 する。 このアルゴリズムに使用されるデータセットは、訓練されたニューラルネットワークと同じものである必要はありません。 入力摂動特徴重要度アルゴリズムは、ニューラルネットワークへの入力フィーチャの各々がアルゴリズムによって摂動され たときのニューラルネットワークの損失を計算する。 この考え方は、重要な入力が乱されると、ニューラルネットワークはその入力の重要性に対応する損失増加を有するべきで あるということである。 入力が完全に除去されるのではなく、摂動されているため、評価された各フィーチャに対して新しいニューラルネットワー クを訓練する必要はありません。 むしろ、この機能は提供されたデータセットに混乱しています。 この特徴は、ニューラルネットワークにほとんどあるいは全く価値を与えないように摂動されるが、ニューラルネットワー クはその特徴に対して入力ニューロンを保持する。 各入力が評価されるので、ニューラルネットワークには何の変更も行われない。 入力摂動特徴重要度アルゴリズムのための特徴をうまく混乱させるためには、2つの目的が満たされなければならない。 第1に、入力フィーチャは、ニューラルネットワークに予測力をほとんどまたは全く与えない点まで摂動しなければならな い。 第2に、入力フィーチャは、摂動されるフィーチャを超えてニューラルネットワークに悪影響を及ぼさないような方法で乱さ れなければならない。 両方の目的は、評価される列をシャッフルまたは摂動させることによって達成される。 列をシャッフルすると、予想される各ターゲットに対して誤った入力値が表示されます。 第2に、シャッフルは、列が同じ分布を維持するので、列のほとんどの統計的測定値が同じままであることを保証する。B.相関係数の重要性
フィルタベースのフィーチャ選択アルゴリズムでは、メトリックを使用して各フィーチャを分類します。 低ランクの特徴は排除される[6]。 フィーチャサブセットの適合度を評価する際に、データの固有の特性が考慮されます。 フィルタベースのフィーチャ選択手法では、学習アルゴリズムを使用せず、必要なコンピューティングリソースも少なくて 済みます。 しかしながら、その結果得られた特徴のサブセットは、分類アルゴリズム[7]とよく一致しないかもしれない。 相関係数特徴重要度は、ニューラルネットワークの各入力特徴間の相関係数の絶対値を計算するフィルタアルゴリズムであ る。 この値は、ニューラルネットワークまたは他のモデルに対する各入力フィーチャの重要度を推定するために使用できます。 相関係数が高いほど、フィーチャの重要性が高くなります。 各入力フィーチャの絶対値を含むベクトルは、通常、ベクトル全体が1になるように正規化されます。 これは、各係数の絶対値をこれらの絶対値の総和で割ることによって達成される。C.重量分析機能の重要性
埋め込み機能の選択は自然に行われ、意思決定ツリーやニューラルネットワークなどの特定の学習アルゴリズムのための トレーニングプロセスの一部として追加のフィルタリングステップは必要ありません[8]。 ニューラルネットワークの重みから特徴の重要性を引き出す多くの埋め込みアルゴリズムが実装されている。 これらの体重分析アルゴリズムの多くは、ガーソン(Garson)アルゴリズムおよびウェイトペアアルゴリズムは、単一の隠 れた層を必要とし、深部神経回路網に適合しない。 このため、このツールキットによって実装された重み分析に基づく特徴重要度アルゴリズムは、Garsonおよび結合重みアル ゴリズムによって提案されたアルゴリズムの単純化である。 既存のウェイトベースのアルゴリズムでは、入力と非表示層と、隠れ層と出力層との間の対応する重みを含む。 単一の隠れ層しか存在しない場合、両方の層の間の重みが考慮されることが重要である。 図1は、所与のニューロンの重要度がGarsonまたは接続重みアルゴリズムのいずれかによって計算されるときにどの重みが 考慮されるかを示している。 この図では、入力I1の重要性が考慮されています。 実線はアルゴリズムによって使用される重みを表し、破線は計算にとって重要ではない。 隠れたニューロンはH、入力はI、バイアスはB、出力はOとラベル付けされています。 図1.重要度計算に使用されるニューラルネットワーク重み入力と各隠れニューロンとの間の重みは、その入力の重要性の主 要な指標です。 しかし、Garsonと接続重みアルゴリズムは、入力を隠れた重みと出力重みの対応する隠れた重みで乗算することにより、よ り高い精度を達成します。 これにより、最終的に乗算される出力ウェイトによって、その重要度をスケーリングすることができます。 いずれのアルゴリズムもニューラルネットワークのバイアス重みを使用しない。D.ハイブリッド機能向上アプローチ
ハイブリッド特徴選択法は、学習アルゴリズム[9]との独立した尺度を用いて元のデータセットからサブセットの妥当性 を評価する。 この方法の多くの例が文献にある。 [10]では、コロニー最適化と相互作用に基づくハイブリッド特徴選択 オーストラリア気象局の予測者のための情報(ACOMI)が開発されました。 コロニー最適化または相互情報と比較して改善された性能 別途使用した。 [11]では、粒子群最適化法と相互情報量(PSO-MI)を組み合わせた特徴選択アルゴリズムを提案した。 PSO-MIは、粒子群最適化または別々に使用される相互情報と比較して、一時的な筋電信号のデータセットで改善された精度 を示した。 Zhangらは、2段階選択アルゴリズムを開発しました。これは、Reliefと遺伝子発現データ[12]の最小冗長度最大妥当性 (mRMR)。 著者らは、mRMR-ReliefF選択アルゴリズムとReliefF、mRMR、および他の特徴選択法を比較する実験を行った サポートベクターマシン(SVM)とナイーブベイズ。 実験では、遺伝子選択のためのmRMR-ReliefFアルゴリズムを、別々に使用されるmRMRまたはReliefFと比較して改善した結 果を示した。 [13]では、アリコロニー最適化とシミュレーテッドアニーリング(ACO-SA)の組み合わせに基づくハイブリッド進化アルゴ リズムが提案された。 クラスターセンターの初期選択は、ACOとSAの助けを借りて選択された グローバルな最適化を達成する。 アントコロニーの最適化は、データポイント間のコロニーを見つけるために使用されます。 シミュレーテッドアニーリングは、最良のものを見つけるための良い局所探索アルゴリズムとして使用されます 累積確率を用いてグローバルな位置を決定する。 [14]は、cAnt-Miner2とmRMRを組み合わせたハイブリッドアルゴリズムを記述している 特徴選択アルゴリズム。 cAnt-Miner2アルゴリズム[15]は、cAnt-Minerアルゴリズムによって導入された連続属性に対処する拡張アプローチである。 cAnt-Minerアルゴリズム[16]は、連続属性を持つAnt-Miner [17] Ant-Miner関数の拡張であり、したがって、ルール構築プ ロセス中にエントロピーベースの離散化手法を組み込んでいます。 cAnt-Minerは、連続した属性の離散間隔をオンザフライで作成します。 前処理のための離散化方法を必要としない。 公衆医療データセットを使用したcAnt-Miner2とmRMRの組み合わせの実験結果は、cAnt-Miner2の結果と比較して改善された 結果をもたらしました。 提案された組み合わせは、精度、シンプルさ、および 元のcAnt-Miner2アルゴリズムと比較して計算コストが削減されます。 [18]では、mRMRフィルタを組み込んだ遺伝子選択のためにサポートベクター再帰的特徴除去アプローチを適用した。 このアプローチは、いくつかのベンチマークデータセットの良性組織からの癌組織の同定を改善しました。 mRMRまたはSVM-RFEとは別個に比較した。 [19] 相互情報量(MI)およびMI-PCAと呼ばれる主成分分析(PCA)の測定に基づくハイパースペクトルデータ次元削減のアプロ ーチを説明し、空間的に最もすべてのターゲットクラスに類似する主成分。 著者らは、ワシントンDC領域をカバーする191の帯域を持つ超スペクトルデータを用いて実験を行った。 MI-PCAを使用して191から選択された2つのフィーチャは、支援ベクトルマシン分類器を用いて、トレーニングデータおよ びテストデータに対してそれぞれ98%および93%の分類精度を提供することが示された。 特徴選択に関する他の研究では、二元粒子群の最適化や異なる進化を含むいくつかの進化的アルゴリズムの能力も評価さ れています。 最良の特徴集合[20]を選択する。 各進化アルゴリズムは、ニューラルネットワークとサポートベクトルマシンの両方を使用して適用され、どのアルゴリズ ムが一 貫して最高の最も簡潔な一連の特徴を生成したかを調べる。 彼らの実験は、異なる進化アルゴリズムがより少ない数の特徴を使用してより高い予測精度を日常的に達成したことを示 した。 異なる進化を用いて、選択された特徴の総数が68%削減され、分類に使用される機械学習アルゴリズムによって維持され なければならない全体の状態空間が実質的に減少した。 特徴選択を改善するために多数の技術が適用されてきたが、ニューラルネットワークによって実行される分析に対する個々 の特徴の相対的重要性がこの研究の焦点である問題である。 Garson [21]は、入力ニューロンの重要度をランク付けできるアルゴリズムを作成した 評価される入力と出力との間のすべての重みを合計することによってニューラルネットワークの挙動を明らかにする。 Goh [22]は、バックプロパゲーションニューラルネットワークを使用して、接続重量を調べることでアプリケーションを調 べることで、地盤工学アプリケーションで特定の変数の重要性を判断しました。 ゴーのアプローチは、ガーソンのアルゴリズムの詳細と経験的検証を追加しました。 Olden [23]はGohのアプローチを拡張し、Garsonのアルゴリズムなどを使用してニューラルネットワークのメカニズムをよ りよく理解しました。 彼らは、接続重みの統計的重要度およびニューラルネットワークにおける個々の入力変数の寄与にアクセスすることができ たランダム化手法を開発しました。 アプローチは、ニューラルネットワークへの様々な入力変数の個体および相互作用の貢献を解釈することを可能にした。 さらに重要なことは、採用されたランダム化アプローチは、ニューラルネットワークによって生成される予測に最も重要に 寄与する変数のうちの1つである。 これにより、分析に有意に寄与しなかったニューロンのヌル接続が排除された。 Oldenのアプローチは、一般に接続重みアルゴリズムと呼ばれています。 Garson、GohおよびOldenによって提案されたアルゴリズムは、単一の隠れた層を必要とし、深い神経ネットワークと直接的 に適合しない。 すべてのニューラルネットワーク実装は、入力空間における重要な特徴の認識から利益を得ることができるが、深い学習ベ ースのニューラルネットワークは、効果的な特徴選択/重要技術の使用から特別な利点を得る。 深い生成モデルの中で、TensorFlow [2]は、ますます複雑化するさまざまなデータセットに適用されています。 パッケージを使用するアプリケーションに必要なトレーニング時間が短縮されれば、TensorFlowが提供する可能性が大幅に 向上します。 しかし、この研究に先立って、TensorFlowに基づく部分的に訓練された深いニューラルネットワークから、妥当な安定した 特徴の集合を評価する方法はなかった。
初期設定
基礎
以下 ライブラリーを使わずにPythonでニューラルネットワークを構築してみる による
以下 ライブラリーを使わずにPythonでニューラルネットワークを構築してみる による
Scikit-learnのmake_moons機能でデータを作成する データクラス 二通り 分類モデルを機械学習 サンプルポイント毎に正しいクラスを予測する 今回データでは 多項式特性でモデルを作成可能 ニューラルネットワークで問題を解決 ニューラルネットワークの隠れ層が特性を探しだしてくれるニューラルネットワークの解説の下準備 ロジスティック回帰モデルを学習させる schikit-learnを使ってロジスティック回帰モデルを構築する ロジスティック回帰モデルを学習させて Decision Boundary (決定境界)を境にクラスの分類 直線を率いて可能な限りクラス分けをしているが データの「月型」を認識はできていない3層のニューラルネットワークを構築してみる * インプット層 隠れ層 アウトプット層 インプット層のノード 2つ アウトプット層のノードの数はクラスの数 2つ 隠れ層の次元 (ノードの数)を決める * 隠れ層ノードの数が多いほど複雑なモデル構築可能 数が多いほど学習と予測にコンピューティングパワーが必要となる 数が多いほどオーバーフィットのリスクが増すので要注意 ノード数を変えてアウトプットへの影響を見てみる 隠れ層のアクティベーション関数を決める インプットデータを変形 (transform)してアウトプットする関数 非線形アクティベーション関数で非線形データの学習も可能 アクティベーション関数例 Tanh シグモイド関数 ReLUsがある 様々なケースで比較的よい成果を出せるtanhを使ってみる この関数の特性は微分した値を計算できること tanhxtanhxを一度計算すると後で再利用が可能 確率を与えたいのでアウトプット層のアクティベーション関数にSoftmax関数を使うこの例では forward propagationという一種の行列乗算と 上記で定義したアクティベーション関数の応用を使う インプットxが2次元の場合 予測値 y^は別記により計算する実際にコードを書いてみる 隠れ層が3つのニューラルネットワーク 隠れ層の適合サイズをチェックパラメーターを学習させるということは 学習用データ上のエラー値を 最小化するパラメーター (W1W1 ,b1b1, W2W2, b2b2)を探すことだ エラー値を測る関数をLoss関数という Softmaxでは Loss関数交差エントロピー最小化 (negative log likelihood)を用いる Loss関数は別記のとおり記述できる 以下 詳しくは ライブラリーを使わずにPythonでニューラルネットワークを構築してみる 参照のこと
応用
以下 【機械学習】ディープラーニング フレームワークChainerを試しながら解説してみる による 1 インストール 2 サンプルコードの入手 3 サンプルコードを見る 3.1 準備 3.2 モデルの定義 3.3 Optimizerの設定 4 訓練の実施と結果 5 答え合わせ 6 第1層のパラメータwの可視化 7 出力層のパラメータwの可視化 8 おまけ 9 おまけ2 活性化関数
実用
- 関連記事
-
- Deep Learning
- A3C
- Google Cloud