(株)アイメックのブログです。2018年8月31日金曜日ディープラーニングを体感しよう:第8章(体験してみて)こんにちは。これまでの記事:ディープラーニングを体感しよう:第1章(まずは環境構築)ディープラーニングを体感しよう:第2章(Python環境を構築する)ディープラーニングを体感しよう:第3章(プログラムを動かしてみよう)ディープラーニングを体感しよう:第4章(ディープラーニングとは?)ディープラーニングを体感しよう:第5章(プログラムコードを見ていこう1)ディープラーニングを体感しよう:第6章(プログラムコードを見ていこう2)ディープラーニングを体感しよう:第7章(プログラムコードを見ていこう3)前回はプログラムコードの内容を最後まで見ました。今回は、一通りディープラーニングというものを体験してみて感じたことをまとめていきたいと思います。自分がやりたいことをやろうとすると、それに対する学習用データとテスト用データを自身で用意することとなります。機械学習にはある程度のサンプル数が必要になります。今回の使用したプログラムで言うと6000サンプル使いました。6000個のデータとそれに対する答えのセットを用意するだけでも、なかなかの苦労です。学習しても上手く判断してくれずに、正解率がまったくあがらない。いうことにもなりかねません。量も質も大切ですので、なかなか大変な作業です。正直なところ、一から自分で組んだとして、今の知識だけでは、ハイパーパラメータを自在にチューニング出来るとは考えられないです。解説でもアルゴリズムについてはかなり省略して書きましたが、それぞれどういった特性があって、こういう場面で使うべき。いうのをしっかりと理解しておく必要があります。期待する線形にするには、どのような設定を行うのがよいのか。一筋縄ではいかないと思います。今回は、手書き画像の認識を例でやってみましたが、いろいろな形で応用出来そうです。以下の動画はロボットアームが部品を上手く掴むようにディープラーニングで学習させるものですが、こういうものが組めるととても面白そうです。実現出来るライブラリは、すでにいろいろと揃っていますので、みなさんも興味があれば、ぜひチャレンジしてみてはと思います。今回で「ディープラーニングを体感しよう」の連載は終了となります。長い間、ありがとうございました。機械学習2018年8月24日金曜日ディープラーニングを体感しよう:第7章(プログラムコードを見ていこう3)こんにちは。これまでの記事:ディープラーニングを体感しよう:第1章(まずは環境構築)ディープラーニングを体感しよう:第2章(Python環境を構築する)ディープラーニングを体感しよう:第3章(プログラムを動かしてみよう)ディープラーニングを体感しよう:第4章(ディープラーニングとは?)ディープラーニングを体感しよう:第5章(プログラムコードを見ていこう1)ディープラーニングを体感しよう:第6章(プログラムコードを見ていこう2)前回は前々回に引き続き、プログラムコードの内容を見ていきました。答えを導き出すための準備をしました。残りももう少しなので、引き続き内容を見ていきます。y_test))1行目の処理で、学習に必要な最適化パラメータを作成しています。他にもいろいろとアルゴリズムの種類があるようで、この種類を変えることで、学習速度や学習精度が変わってきます。これも、前回少し解説した、活性化関数のようなもので、アルゴリズムを追っていくと、難解な数式が出てきます。今回も内容については深追いはしません。2行目の処理で、これまで設定してきた内容の学習処理を構築しています。これでニューラルネットワークの作成が完了です。学習用データ、テスト用データを渡し、学習とテストを行っています。batch_sizeというパラメータで、一度に渡すデータの数を指定しています。この単位で、正解、不正解の「重み」をつけています。epochs(エポック)というパラメータで、反復学習させる回数を指定しています。ここでは6000データを5セット学習することとなります。marker="x")plt.ylabel("accuracy")plt.xlabel("epoch")plt.legend(loc="best")plt.show()そして、これらの処理でテストした結果をグラフ化し、画面へ表示しています。横軸がエポックになっており、右へ進むほど反復学習を繰り返していることを表しています。縦軸は正解率になっており、反復学習を繰り返すことで、正解率が上がっていく。いうことがグラフから読み取れます。学習用データに対する正解率。テスト用データに対する正解率になります。学習を繰り返すことで、正解率が上昇していることが分かると思います。ちなみに、このプログラムの実行結果ですが、実行する度、違う結果が表示されます。(グラフは同じようなものになりますが、若干数値に差が出ます)ニューラルネットワークを作成する際に設定したパラメータ(このことをハイパーパラメータという)によって、ランダム性も取り入れられ、機械的ではなく、本当に人間思考のような形で、答えを得ることが出来ています。