Pythonで機械学習入門⑥ディープラーニング(深層学習)編



Pythonでディープラーニングについて学びたいけど、どう始めればいいかわからないよ。。。

この記事では、Pythonや投資初心者でもできるように、機械学習の入門をレクチャーしていきます!

今回の記事は日本ディープラーニング協会(JDLA)様のG検定公式テキストを参考に作成しています!

また、記事中参考としてヨビノリたくみ様の動画を添付させていただいてます!

(記事にでてくるコードは配布しております。まとめにあるリンクからダウンロードください。)

本記事は、全6回に渡って掲載される「Pythonで機械学習入門」シリーズの第6回になります!

このシリーズを読むとわかること

  • 機械学習の教師あり学習についてざっくり理解できる
  • 機械学習の教師なし学習についてざっくり理解できる
  • 機械学習の強化学習についてざっくり理解できる
  • 機械学習のニューラルネットワークについてざっくり理解できる
  • 機械学習の深層学習についてざっくり理解できる

機械学習について理解すれば、トレンドの技術である人工知能についてより正確な知識を身につけることができます!

それだけでなく、本記事ではPythonをつかい分析をするためプログラミングのスキルも磨けます!

第6回ではその中でも、

  • ディープラーニングをざっくり理解する
  • Pythonを用いてディープラーニングを体験する

といったことをおこなっていきます!

それでは一緒にまなんでいきましょう!

ディープラーニング(深層学習)をざっくり理解しよう!

ここではまず、そもそもディープラーニングとはなんなのか、どういった仕組みで学習していくのかについて簡単に抑えていきます!

ディープラーニングは、自動運転や自動翻訳、タクシーの需要予測など沢山の分野で利用されています!

ファイナンスに限った話ですと、株価予測や不正取引の検知のさいに用いられます!

ディープラーニングとは

ディープラーニングとは

]隠れ層を増やしたニューラルネットワーク。

第5回のニューラルネットワーク際、私は多層パーセプロンについて話しました。

why
機械学習入門⑤をまだ見ていない方はこちら!

Pythonで機械学習入門⑤ニューラルネットワーク編

この多層パーセプロンの隠れ層増やす、言い換えると層を深くする(ディープにする)ことがディープラーニングです。

層を増やすことで関数が組み合わさり、複雑な関数を表現することが可能になりました。

とくにそのなかで肝となるのが、バックプロパゲーションと呼ばれる技術です。

バックプロバケーション(誤差逆伝搬法)とは
モデルの予測と実際の結果の誤差を逆向きにフィードバックし、予測の誤差を小さくしていく技術。

つまり、層を深し、最終的な予測結果から逆向きに誤差を遡り、結果をもとに誤差をなくし精度を高めるよう学習していくことがディープラーニングです!

ちなみにですが、ディープラーニングは、別名ディープニューラルネットワークなんて呼ばれたりもします。

ディープラーニングは、もっと数学的な要素が強く、今回は本当ざっくりとしていますので、詳しく知りたい方は本などを参考にしてください!

ディープラーニングでできること

今回は、具体的な手法というより、ディープラーニングによってできることについて解説します!

ディープラーニングできることが以下の例です。

  • 画像認識(自動運転、顔認証など)
  • 音声処理(アレクサや文字起こしなど)
  • 自然言語処理(チャットbotや自動翻訳など)
  • 異常検知(不良品検出や防犯など)

これを見ると、どの分野にも応用されており、産業問わず需要があることがわかりますね!

具体例にどのようにディープラーニングがこういった分野に用いられているかについては、
ヨビノリたくみ様の動画の7分55秒〜がおすすめです!

この動画では、画像認識(文字認識)を例にディープラーニングの応用のされ方を感覚的に理解することができます!

    引用:【機械学習】深層学習(ディープラーニング)とは何か



    Pythonを用いてディープラーニング(深層学習)を体験しよう!

    ディープラーニングについてなんとなく理解したところで、実際にPythonをもちいて体験していきましょう!

    今回は、コードを全部解説していくというより、「ディープラーニングの流れってこうなんだ」程度に思ってくださると嬉しいです!

    理由としては、「Relu関数」や「ソフトマックス関数」など数学的な要素がかなり多いため、全てを解説するのが難しいためです…笑

    今回も、Fashion MNISTというデータセットを用いて服を分類する流れを学んでいきます!

    それでは体験していきましょう!

    今回体験するデータを読み込む

    まずは、下記のLINE@から「機械学習入門6_ディープラーニング編」のファイルをダウンロードします。

    メッセージにて、「機械学習」とお送りいただければダウンロードができます。

    友だち追加

    その後、ジュピターノートブックを使いファイルを読み込みます!

    ここでは、今回分類をする画像を読み込ませ、訓練データとテストデータにわけていきます!

    CNNをつかうための準備をする

    データを分割をした上で、ディープラーニングの手法の1つであるCNNをつかうための準備をしていきます!

    CNN(<span>畳み込みニューラルネットワーク)</span>とは

    隠れ層が「畳み込み層」と「プーリング層」よって構成されるニューラルネットワーク。

    何を言っているのかわからないですが、隠れ層が特殊な層をしているディープラーニングの手法の一つという認識で大丈夫です!

    ちなみにですが、このCNNは画像認識の分野で使われることが多く、今回も使用しています!

    データを確認する

    まずは、取得したデータを確認してみましょう!

    まずは、今回のデータ量を確認します!

    ニューラルネットワーク編と同様に、訓練データが、28×28ピクセルの画像が60000枚あることがわかります!

    加えて、データの一部をみていきましょう!

    100番目の画像を選択するとカバンを出力されました!

    モデルを作成するための準備をおこなう

    データを確認したところで、モデルを作成します。

    ただその前に、ディープラーニングの学習速度を上げるためコードなどを書いていきます!

    加えて、CNNで分類をするために、データの画像を数字にカテゴライズしていきます!

    ここでは、0と1のセットで数字が表されます。加えて数字は、1の場所によって決まります。

    たとえば、3は[0, 0, 0, 1, 0, 0, 0, 0, 0, 0]と、0から数えて3番目に1が入って表されます。

    なお、ラベルは以下の通りです。

    0 = Tシャツ/トップ
    1 =パンツ
    2 =プルオーバー
    3 =ドレス
    4 =コート
    5 =サンダル
    6 =シャツ
    7 =スニーカー
    8 =バッグ
    9 =ショートブーツ

    モデルを作成し訓練させる

    データを確認したところで、モデルを作成します。

    詳しくは、数学的なところが強いため省きますが、CNNのモデル作成していく流れを書いてます!

    その後、モデルを学習させます!

    本来は、PCといったローカル環境ではなく、GPUを大きくできるクラウド環境で学習させることが一般的ですが、今回はそのままローカル環境で簡単に学習させていきます!

    予測結果を確認する

    モデルを学習させたところで、実際の精度をみていきましょう!

    このとき、下記のような結果が出ていることがわかります。

    loss: 0.3152 - accuracy: 0.9022

    このときlossは、モデルがどれだけ予測ができなかったのかを表しています。

    ニューラルネットワーク同様に、ディープラーニングでは、loss(損失)を表すことが一般的な印象なので今回記載しました。

    またacuracyは、モデルの精度を表しています。

    今回は90.2%とかなり当てはまりが良いことがわかります!

    予測結果から画像を確認する

    予測結果をもとに、実際の画像を確認しましょう!

    まずは、予測のラベルと実際のラベルの結果を表示し予測できているかをみます。

    今回もちゃんと予測できていることがわかります!

    (  9 =ショートブーツ )



    まとめ

    第6回では、

    • ディープラーニングをざっくり理解する
    • Pythonを用いてディープラーニングを体験する

    といったことをおこなっていきました!

    ここまで読んでくださりありがとうございました!

    今回のシリーズは入門ですので、これから自分なりの機械学習をみつけ、更に飛躍していただければと思います!

    記事にでてくるコードはLINE@にて配布をしております!

    ラインのメッセージ欄に「機械学習」とお送りいただければ、ダウンロードリンクを送付いたします!

    友だち追加

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    CAPTCHA