AI_ML_DL’s diary

人工知能、機械学習、ディープラーニングの日記

Transfer Learning

Transfer Learning

*Hands-On Transfer Learning with Python : Implement advanced deep learning and neural network models using TensorFlow and Keras, D. Sarkar, R. Bali and T. Ghosh, 2018, Packt Pub., 

 

Chapter 1: Machine Learning Fundamentals

*Why ML?

 我々は、学習するモデルを手に入れた。

 この学習モデルは、ヒトが学習することによってさまざまな活動が可能になるのと同様に、さまざまな活動が可能になっている。

 手書き文字認識、顔認識、スパムメールの振り分け、医療画像診断、自動運転のリアルタイム物体認識、翻訳、読み上げ、作画、作文、作曲、ボードゲーム素粒子物理実験結果の解析、第一原理計算の時間短縮、タンパク質の構造予測、化学物質の物理化学的性質の予測、低分子薬剤の探索、・・・。

 サイエンスの分野では、理論計算によって得られた成果を、モデルが学ぶことによって、正確さを損なうことなく高速に再現できるので、その結果を容易に次の解析に用いることが可能になっている。

*ML techniques

 supervise, unsupervise, semi-supervise and reinforcement

 batch learning and online learning

 classification : logistic regression, support vector machine, neural networks, random forest, k-nearest neighbours, decision trees

*CRISP-DM

    Cross Industry Standard Process for Data Mining (CRISP-DM) is one of the most popular and widely used processes for data mining and analytics projects. CRISP-DM provides the required framework, which clearly outlines the necessary steps and workflows for executing a data mining and analytics project, from business requirements to the final deployment stages and everything in between.

  ・Business understanding

 MLを何に使うのか。

  ・Data understanding

 ここでは、EDA(Exploratory data analysis):データの内容を、そのまま表やグラフに表示だけでなく、基本的な統計データや相関グラフを作って、ビジネスの目的に合っているかどうかを調べることによって、データを理解する。

 学習用テキストやコンペなどの整えられたデータセットではなく、ビジネス目的に合わせて集めたデータをデータベース化するような作業において重要。

  ・Data preparation

 繰り返しになるが、学習用テキストやコンペなどの整えられたデータセットではなく、ビジネス目的に合わせて集めたデータをデータベース化するような場合においては、全体の60~70%くらいの時間を要する作業であるとのこと。

 たくさんデータがあるので、それを活用して有用な情報を引き出したい、というようなときには、概して、データフォーマットはバラバラで、ファイルもバラバラで、電子化すらされていないこともまだまだ多いのだろうと思う。電子化といっても、pdf、それも、印刷物のpdfだったり、手書き文書のpdfだったりするかもしれない。

 依頼案件だと、何ができるかわからないので、何をしてほしいのかわからないこともありそうだ。受ける側は、何ができるか聞かれるだろうけど、データをある程度調べないと何ができるか言えないだろう。

 依頼を受ける場合は、最初のbusiness understandingとセットで、検討していくことになりそうだな。

 データベース化する、という作業も含めると、ラベル作成もあるから、たくさん仕事がありそうだな。

 ここを、自動化するためのモデルを作ることができないだろうか。 

  ・Modeling

 Kaggleのコンペの内容には、実際に依頼される可能性のありそうなテーマがあるように思うので、本気でサーチして、discussionやnotebookで勉強しておこう。

 コンペの目的とmetricsとデータセットが揃っていて、学習コースもあって、計算環境も整っているので、もっと活用しなければいけないな。

 突然だが、日本語で処理する、ということを考えていないので、これも考えていかねばなるまい。

 メジャーなモデルは、とにかく、使えるようにしておかないと。

 これからメジャーになるモデルも調べておかないと。

  ・Evaluation

 モデルの出来栄え。目的に適合した出力が得られているかどうかだな。

  ・Deployment

 実際の使用環境にインストールして、性能確認し、マニュアルを作成する。ソフトのみ(プログラムコードとデータセット)を出荷する場合には、ハードウエアの推奨条件、プログラム環境構築の説明、などが必要になる。

*Exploratory data analysis (EDA)

EDA is a very powerful mechanism for understanding the dataset in detail before jumping into other stages of ML. In the coming chapters, we will regularly perform EDA to assist us in understanding the business problem along with the dataset before we go into modeling, tuning, evaluation, and deployment stages.

*Working with text data

 

Chapter 2: Deep Learning Essentials

Deep learning framework

*Setting up a cloud-based deep learning environment with GPU support

*Setting up a robust, on-premise deep learning environment with GPU support

*Neural network basics

*A simple linear neuron

*Gradient-based optimization

*The Jacobian and Hessian matrices

*Chain rule of derivatives

*Stochastic Gradient Descent

*Non-linear neural units

*Learning a simple non-linear unit - logistic unit

*Loss functions

*Data representations

*Multilayered neural networks

*Backprop - training deep neural networks

*Challenges in neural network learning

*Initialization of model parameters

*Improvements of SGD

*Overfitting and underfitting in neural networks

*Hyperparameters of the neural network

 

Chapter 3: Understanding Deep Learning Architectures

*Why different architectures are needed

*MLPs and deep neural networks

*Autoencoder neural networks

*Variational autoencoders

*Generative Adversarial Networks

*CNNs

*Capsul networks

ヒトの視覚による認識能力と比べると、CNNには、多くの課題がある。その課題克服のために多くのDNNが開発されており、CapsNetもその1つである。

テキストに引用されている論文のabstractとCapsNetの概略図を転載する。

Dynamic Routing Between Capsuls, S. Sabour, N. Frosst and G. E. Hinton, NIPS2017, 

f:id:AI_ML_DL:20200309122559p:plain

f:id:AI_ML_DL:20200309120901p:plain


*Recurrent neural networks

*Memory Neural Networks

*Neural Turing Machine

*The attension-based neural network model

 

Chapter 4: Transfer Learning Fundamentals

学習済みモデルを正しく利用するための指針

*Introduction to transfer learning

学習済みモデルは、学習することによって、”知識”を獲得する。

獲得した”知識”は、学習済みモデルの”weights”として保存されている。

モデルと”weights"は一体物なので、目的に応じて、モデルに変更を加える。

*Advantages of transfer learning

 学習済みモデルの”知識”を上手に使えば次のようなメリットがある。

・Improved baseline performance

 学習曲線の初期値が高く、立ち上がりも早く、飽和も早く、高止まりする。

・Model-development time

 学習済みモデルを改造するだけなので、モデル開発時間は大幅に短縮される。

・Improved final performance

 高性能モデルを良質なデータセットで訓練しているので、高性能が期待できる。

*Transfer learning strategies

 種々の考え方がまとめられている。

 たとえば、ドメインとタスクが同一の場合に最良の結果が期待されるのだが、ドメインが異なる、タスクが異なる、などの場合に考慮すべき事項が示されている。 

*Transfer learning and deep learning

・Transfer learning methodologies

        Feature-extraction:学習済みモデルの最後の全結合層を除去して、別の分類器                                           に入れ替えることにより、特徴量の抽出を行う。

        Fine-tuning:学習済みモデルをそのまま用いるが、学習済みパラメータを部分的                                  に 凍結解除して学習させる方法。これにより、高度なモデルと良質                                  な学習済みパラメータを使用して、目的のタスクを良質に行える。

・Pretrained model

 学習済みモデルは、誰でも使えるようになっている。

 Kerasでは、Xception, VGG16, VGG19, Resnet50, InceptionV3, MobileNet, DensNet121などをImageNetで学習させたモデルが用意されている。

・Applications

 学習済みモデルは、すでに、様々な分野で広く使われている。

      Transfer learning with text data : sentiment analysis, document classification

      Transfer learning with computer vision : style transfer, face detection

      Transfer learning with speech/audio : Automatic Speech Recognition

*Deep transfer learning types

 いずれもtransfer learningである。内容は少しずつ異なっているが、ヒトによって使われ方が異なっていることがあるので、この本の中では、ここで説明した定義に従うとのこと。

・Domain adaptation

・Domain confusion

・Multitask learning

・One-shot learning

A Baysian Approach to Unsupervised One-Shot Learning of Object Categories, Li Fei-Fei, Rob Fergus and Pietro Perona, ICCV 2003

理解が正しければ、3種類の物体について十分な量のデータで訓練した後、4種類目の物体を1枚の画像で訓練して、4種類目の物体を有意な確率で識別できた例である。 

・Zero-shot learning

訓練データ中に、あるラベルに対応するデータがない状態。例えば、ImageNetで、飛行機のデータが全く無い(意図的に除く)場合に、訓練後に、飛行機の画像を入力したら、飛行機に分類されるか否かという命題のようだ。

特徴量空間における類似性の問題だと思うのだが、これを全分類データに対して行えば、特徴量空間における物体の類似性が得られそうだが、それと、機械学習での特徴量分布を比較するとか、モデル間での違いを調べるとかするのはどうだろう。計算資源が膨大になるので、当分は誰もやらないだろうな。

簡単なデータベースでやってみるかな。同じ条件で、one-shot learningもできそうだな。モデルによって結果が違ってくるのかな。

*Challenges of transfer learning

 transfer learningは、はかり知れないポテンシャルがある。と同時に、研究開発が必要な、核心にふれる問題点がある。

・Negative transfer

 transfer learningによる改善が見られず、かえって悪くなることがある。ソースとターゲットで、ドメインやタスクの類似度に問題があるとか、transfer learningの方法にも課題はあるかもしれない。

・Transfer bounds

 ”知識”がどれだけ移転されたかを定量的にはかることができれば、transfer learningをより効果的に行うとか、適用可能性を評価することができる。いくつか研究はあるが、これ以上はふれない。読者諸氏の奮起に期待する。

 

Chapter 5:  Unleashing the Power of Transfer Learning

 著者らは、F. Chollet氏に、Kerasの開発および、Deep Learning with Pythonにおいてtransfer learningが効果的であることを述べていることに対して感謝の意を表明している。(自分も昨年の6月に読んで、transfer learningはすごい技術だと感じたが、まだ全てにおいてレベルが不足していて、ついていけなかった。その後のKaggleのコンペAPTOS2019では、自作のCNNをこねくりまわしていた。ちゃんと読み返さないといけないな。テキスト全体が、示唆に富む言葉であふれているのだから。)

*The need for transfer learning

 ”知識”の適切な移転は時間短縮と高精度化につながる。

*Building CNN models from scratch

 F. Cholletさんの著書とよく似たストーリーなのでとりあえず、パス。

*Leveraging transfer learning with pretrained CNN models

 学習済みモデルを用いたfeature extractingと、学習済みモデルのファインチューニングを行う。

・Understanding the VGG-16 model

 192ページのVGG-16 Model Architectureと

 193ページのVanilla, Feature Extractor, Fine-Tuningのモデルは、非常にわかりやすい。

 特に193ページの図面は、特徴量抽出のモデルをどうやって作るのか、ファインチューニングのモデルをどうやって作るのかが、一目でわかる。

 これらの図面を見るだけでも、このテキストは価値があったと思う。

・Feature Extractor

 ImageNetデータセットで学習済みのVGG-16の、最後の3層、4096チャンネルのDwnce FC Layer 1と4096チャンネルのDence FC Layer 2と1000チャンネルのOutput Layerを除去する。次に、除去した場所に、新たな3層、512チャンネルのDwnce FC Layer 1と512チャンネルのDence FC Layer 2と2チャンネルのOutput Layerを挿入する。ダウンロードした学習済みの重みを凍結し、イヌとネコの画像データセットを用いて学習させ、最後に、テスト用のイヌとネコの画像を分類する。最後に、自前のCNNでイヌとネコの画像データセットで学習させ、テスト用のイヌとネコの画像を分類した結果と比較する。分類器だけの交換でも、自前のCNNでのaccが0.80~0.85だったのが、0.90くらいまで上がる。

・Fine-Tuning

 ImageNetデータセットで学習済みのVGG-16の最後の3層を置き換えるところまでは、上記Feature Extractorとまったく同じ。違うのは、学習済みの重みを全部凍結するのではなく、ブロック1から3まで凍結し、ブロック4と5の重みは学習可能にする。この状態で、訓練し、テストすると、accが0.96くらいになる。学習済みの高性能なCNNを使わなければ、画像分類で0.96は到底無理である。

 KaggleのAPTOS2019のときに、学習済みのVGG16を使う方法がよくわからず、VGG16 のモデルで1から学習させるしかなかった。Data augmentation、dropout。batchnormalization、などいろいろ試したが、0.85に達するのがやっと、という感じであった。

 F. CholletさんのDeep Learning with Pythonを片手に、APTOS2019に挑戦していたのだが、ファインチューニングをやらなかった理由はもう1つあって、眼底写真の画像分類に対して、ImageNetの画像データを使った事前学習モデルが役に立つわけなかろうと思っていたところもある。結果はわからないが、今なら、なんとしても、ImageNet画像データで学習済みのResNet50なんかを使ってみたいと思う。工学の世界だから、何でも試してみないとダメなんだと思う。

 F. Cholletさんのテキストを見ると、153ページに、Fine-tuningのわかりやすい模式図がのっている。きちんと見ていなかったかな。Fine-tuningは、5番目のブロックのみを使っていて、0.96を得ている。

 APTOS2019で、Fine-tuningを使って、late submissionに挑戦してみるかな。

*Evaluating our deep learning models

 

Chapter 6:  Image Recognition and classification

 

Chapter 7:  Text Document Categorization

 

Chapter 8:  Audio Event Identification and Classification

*Understanding audio event classification

*Exploratory analysis of audio events

*Feature engineering and representation of audio events

*Audio event classification with transfer learning

*Building a deep learning audio event identifier

 

Chapter 9: DeepDream

 

Chapter 10:  Style Transfer

・F. Chollet氏のプログラムを写経していたので、VGG16の転移学習であることはわかっていたが、4章で説明されている類型のどれに相当するのか、具体的にどう利用しているのかの詳細はまだ理解できていない。

*Understanding neural style transfer

*Image preprocessing methodology

*Building loss functions

*Constructing a custom optimizer

*Style transfer in action

 

Chapter 11: Automated Image Caption Generator

 

Chapter 12:  Image Colorization

 DNNにより、モノクロ画像に色を付ける。

 ここでも、transfer learning が活躍しているようである。

*Problem statement

・自分なら、この課題にどのように取り組むか、考えてから前に進め、と書いてある。

*Color images

*Building a coloring deep neural network

*Challenges

*Further improvement

Deep Koalarization: Image Colorization using CNNs and Inception-Resnet-v2

f:id:AI_ML_DL:20200309145258p:plain

f:id:AI_ML_DL:20200309145740p:plain

 

 つづく

 

*APTOS2019で、Fine-tuningを使って、late submissionに挑戦してみるかな。

 

f:id:AI_ML_DL:20200306211302p:plain

style=112 iteration=1

f:id:AI_ML_DL:20200306211406p:plain

style=112 iteration=20

f:id:AI_ML_DL:20200306211449p:plain

style=112 iteration=500