ぬまのーと(numa-note)

気になっている本やニュース、ブログ運営などいろいろ書きます。

Googleさんが事前学習済みモデルを公開したんだってさ。

こんちは、ぬまおー(@youqixi1122)です。
今回紹介する記事がコチラ。
「Googleの事前学習済みモデルを手軽に利用出来るTensorFlow Hub」
です。
それでは紹介していきます!


自然言語処理におけるword2vecや画像処理におけるInceptionなど、一般的に広く用いられているモデルを上流で用いる事は多くあります。汎用的な知識を扱えるメリットがある一方、学習には大量のデータセットの準備と膨大な学習時間がかかってしまいます。

この問題に対して、あらかじめ学習させた状態のモデル(事前学習済みモデル)を用意しておき上流に転移させる方法があります。本記事ではその事前学習済みモデルについて、Googleが提供するのライブラリであるTensorFlow Hubを紹介します。

TensorFlow HubはGoogleの大量リソースを用いて学習したモデルを手軽に実装できるほか、自作したモデルを別環境で利用しやすいように自作することも可能です。本記事では概要と特徴、利用方法を紹介します。

今回説明するTensorFlow Hubの利用方法、作成方法について実験したコードはGitHubにあります。利用方法は生TensorFlowとKerasにおいてFine-tuningを行う実験を行っています。作成を行う例はネット上でもなかなか無かったので、誰かのお役に立てたら幸いです。(チュートリアルでは大雑把にしか書いてなかった)スターしていただけると嬉しいです。

全文はコチラ。

ぬまお的感想

まったくAIや機械学習に自信ないニキなのでこれを機に記事を読んで分からなかった固有名詞をリスト化して調べようと思います!
上の記事を読みたいけど全く理解できない場合は以下の単語リストを参考にして読んでみてください!

ぬまお的分からなかった固有名詞リスト

  • word2vec

単語の意味をベクトル表現化するとのこと。

例えば、word2vecにより『松本人志』、『浜田雅功』、『ボケ』、『ツッコミ』という言葉を以下のようにベクトル化できたりします。
(中略)
このベクトル表現から、

『松本人志』、『浜田雅功』の距離を計算すると、結構近いところにありそうだ。なので二つの意味は近いのでは?
『松本人志』 - 『ボケ』 + 『ツッコミ』 ≒ 『浜田雅功』 になる。
といった考察・計算ができます。

コチラのブログから引用

つまり極まれば文章を打って理解できるAIを作るためのパーツということでしょうか?

  • Inception

ググると形容詞で「はじめに~」という意味らしい。
PC用語的にはよくわかりませんでした。

  • GitHub

GitHubとは、ソフトウェア開発プロジェクトのためのソースコード管理サービスです。
公開されているソースコードの閲覧や簡単なバグ管理機能、SNSの機能を備えており、開発者にとって無くてはならないサービスです。
また、GitHubを使ってバージョン管理を行っている企業も多数あります。


リンクはコチラ→GitHub
プログラムのソースコードを見ることができるサービスのことです。
マイクロソフトがGitHubを買収したとか聞いたことがあるのでかなり有名なサービスなのでしょう!

  • TensorFlow

TensorFlow(テンソルフロー)とは、さまざまな機械学習の分野で使用するためのOSS(オープンソフトウェアライブラリ)です。
OSS(オープンソフトウェアライブラリ)とは、著作権を保持している作者のソースコードを学習や変更、配布することが可能なライブラリ(汎用性の高いプログラムをひとまとめにしたもの)となります。

  • Keras

Kerasは,Pythonで書かれた,TensorFlowまたはCNTK,Theano上で実行可能な高水準のニューラルネットワークライブラリです. Kerasは,迅速な実験を可能にすることに重点を置いて開発されました. アイデアから結果に到達するまでのリードタイムをできるだけ小さくすることが,良い研究をするための鍵になります.

Pythonで記された深層学習用のライブラリと書かれていますね~
これを使ってAIに使う学習データ

リンクはコチラから→Keras

  • Fine-tuning

fine tuning(転移学習)とは?
既に学習済みのモデルを転用して、新たなモデルを生成する方法です。
つまり、他の画像データを使って学習されたモデルを使うことによって、新たに作るモデルは少ないデータ・学習量でモデルを生成することが可能となります。
「他の画像データを使った学習モデルは、学習する時に定義した出力を得るためにしか使えないんじゃないの?」と思うかもしれません。
しかし、大量の画像から大量のカテゴリに分類したネットワークの上層の部分はある程度同じようなフィルタになるということが分かっています。
また、学習済みのモデルの層では画像の特徴を得る層と画像の分類を行う層があります。
その分類を行う層は取ってしまい、特徴を得る層だけもらって、新たなモデルを生成するというわけです。
VGG16: ニューラルネットワー


  • モジュール

ハードウェアやソフトウェアを構成する個々の部品のこと。ハードウェアのモジュールの場合、基板1枚1枚などそれ単体が高い機能を持った、入れ替え可能な部品を指す。ソフトウェアのモジュールの場合、プログラム全体を構成する機能ごとのひとまとまりのことを指し、プログラムモジュールとも呼ぶ。モジュールの集まりがアプリケーションなどになる。

  • インスタンス生成


クラスとは何でしょうか。クラスは一般的に「設計書」と呼ばれ「何かを実行する物体の設計書」と思って下さい。テレビの設計書。自動車の設計書...。「何かを実行」とは何でしょう。テレビであれば「電波を受信」「画像を写す」「音を鳴らす」...といったことができます。自動車なら「前進」「停止」「クラクションを鳴らす」...といったことができます。
(中略)
設計書はJavaではクラスと呼びますが、設計書から作成された製品は何と呼ぶでしょう。Javaではインスタンスと呼んでいます。そしてクラスを参照しインスタンスを生成することを、インスタンス化する、もしくはインスタンスを生成すると呼びます。
コチラから引用

  • シグネチャ

シグネチャ (signature)とは
電子メールの最後とかにくっつける「署名」のこと
です。
全文はコチラ。



[/https://developers-jp.googleblog.com/2018/05/highlights-from-tensorflow-dev-summit.html:title=Google/:title=Developers日本語翻訳版]

GitHub内のリンク

固有名詞を理解できないと文の内容を理解することはかなり難しいと思います!例えるなら中国語の文章みたいな感じでしょうか?知っている漢字はあるけどはっきりと理解はしにくいっていう。

最後までお読みいただきありがとうございました!