pythonは多様なライブラリ・フレームワークに対応しており、ディープラーニング・AI開発において、注目を集めているプログラミング言語です。
フレームワークを活用することで、開発工程の大幅な短縮やセキュリティの向上などさまざまな実務上のメリットがあります。
中でも、TensorFlowは動作速度が速く、ニューラルネットワークを構築できるため、機械学習・ディープラーニングのフレームワークとして近年人気が上昇しています。
とはいえ、世の中にはTensorFlowの学習教材が溢れており、何をどのような本で学習を始めてよいか迷っている方もいらっしゃるのではないでしょうか?
そこで本記事では現役データサイエンティストとして日々データ分析に携わっている経験をもとに、TensorFlowを学習する際のおすすめの参考書を詳しく解説をしていきます。
監修者
經田 原弘
東京大学大学院新領域創成科学研究科複雑理工学専攻修了。大学時代は3次元の医療データの平滑化処理を研究テーマとし、大学院時代はJAXAと協業し、月探査機かぐやの衛星データから、月面上の水の存否について調査していた。新卒では株式会社リクルートにてレコメンドシステムの開発等に従事し、現在は製造業系スタートアップにてデータサイエンティストとして勤務。応用情報技術者試験・E資格合格者。
【Udemy講座】サイト限定でDS検定講座クーポン配布中!
- 元リクルート・東大院卒(JAXAと共同研究)監修のデータサイエンティスト検定の対策講座をUdemyで配信中
- 機械学習に必要な数学知識も基礎から丁寧に解説
- 期間限定&業界最安!サイト内限定クーポン利用で1,600円で受講可能(正規価格は8,800円)
\ クーポン利用で1,600円/
TensorFlowとは?
プログラミングでアプリケーションやシステムを開発するために必要な機能があらかじめ用意された枠組みのことです。
データ解析、機械学習、GUI開発など目的に応じてさまざまなフレームワークがあります。フレームワークを活用することで、プログラム開発を効率化したり、コードを簡略化することができるので、フレームワークの活用はプログラミングに必須といえます。
まずTensorFlowとはどのようなフレームワークで、どのような場面で活用されているのかの確認から始めていきましょう。
TensorFlow(テンソルフロー/テンソーフロー)はGoogle社が開発したオープンソースのディープラーニングフレームワークです。さまざまな言語、デバイスで扱うことができ、GPUの設定も必要ないので、効率的に開発を行うことができます。
機械学習・ディープラーニングで活用されるフレームワークは他にもあり、主に以下の3つです。
フレームワーク | 主な特徴 |
---|---|
TensorFlow | ・静的な計算グラフを採用しており、グラフを構築する際に最適化された計算グラフが生成されるため、高速に処理することができる |
pytorch | ・動的な計算グラフを採用しており、グラフを構築する際に自由度が高いため、柔軟性に優れている ・Numpyとデータ型が似ており、学習しやすい |
Keras | ・モジュール化やユーザーフレンドリーがあり、拡張性がある ・簡潔なコードで書かれており、読みやすい |
これらの特徴から、TensorFlowは主に画像分類、自然言語処理、レコメンデーション、音声認識、異常検知など幅広い分野で活用されています。たとえば、以下のように活用されています。
活用例 | できること |
---|---|
画像分類 | 画像分類モデルを構築することができます。 たとえば、「Inception-v3」モデルをFine-tuningすることで、ある画像が犬か猫かを判定するモデルを構築することができます。 |
自然言語処理 | 自然言語処理のタスクを自動化することができます。 たとえば、文章の分類や感情分析、文書の生成などをすることができます。 |
レコメンデーション | レコメンデーションを行うことができます。 たとえば、AmazonやNetflixはTensorFlowを使用して、ユーザーに最適な商品や映画を推薦するアルゴリズムを構築しています。 |
TensorFlowはニューラルネットワークの構築や分散学習ができるので、ほかにもさまざまな現場で機械学習・ディープラーニングのフレームワークとして活用されています。
編集部ではほかにも主要なフレームワークであるpytorchやKerasの学習に使える参考書を紹介しています。興味のある方は下記からご覧ください。
TensorFlowを学習する参考書の選び方
TensorFlowを学べる本は非常に多く出版されています。
自分に適した参考書を見つけるために、「選び方」を確認しておきましょう。まずは参考書を選ぶ際に必ずチェックしておきたい「3つのポイント」をご紹介します。
- 自分のスキルレベルに合っている
- 豊富なサンプルコードがある
- 数学知識も学習できる
ポイント①:自分のスキルレベルに合っている
TensorFlowの学習本は数多くあり、超入門レベルから専門技術書レベルまでさまざまな本が売られています。
初学者向けと謳いながらも、高度なアルゴリズムの知識を要したり、専門的な説明が多い本もあり、自身と参考書のレベルとマッチしているかをよく吟味する必要があります。ただ、一方でスキルを判断する基準がないことも事実です。
自身のTensorFlowスキルを判断するヒントとして、編集部ではTensorFlowスキルを3段階に分けた表を作成しました。
TensorFlowのレベルとスキルセット
レベル | できること |
---|---|
初級レベル | ・データの可視化 ・モデルの訓練と評価 ・モデルの保存と読み込み ・データの前処理、データの読み込み ・畳み込みニューラルネットワーク (CNN)、再帰型ニューラルネットワーク (RNN) などの基本的なモデルの構築 |
中級レベル | ・自作の層の作成 ・複数の GPU でのモデルの訓練 ・カスタム損失関数、評価関数の定義 ・TensorBoard を用いたモデルの可視化 ・複数の入力や出力を持つモデルの構築 |
上級レベル | ・カスタムのトレーニングループの作成 ・TensorFlow.js を用いた Web アプリケーションの作成 ・TensorFlow Lite を用いたモバイルアプリケーションの作成 ・深層学習モデルの高速化や最適化のためのアルゴリズムの実装 ・TensorFlow Extended (TFX) を用いたデータパイプラインの構築 |
自身のTensorFlowレベルを確認しながら、ひとつひとつを正しい順番で段階的に学んでいくと学習効率がよくなることが期待できます。
たとえば、初心者はニューラルネットワークの考え方や実装方法から、一方、上級者は複数のニューラルネットワークの結合やTFXの活用などより高度な学習をすると適切な順番での学習が可能になります。
まずは、上記表を参考に現在のTensorFlowスキルを把握して、適切なレベルの参考書を選びましょう。
ポイント②:豊富なサンプルコードがある
2つ目のポイントはサンプルコードが豊富に載っている参考書を選ぶことです。
一般的に、Pythonのフレームワークは多くの機能を組み合わせて使う必要があったり、APIを活用したりする必要があるため、学習内容が多岐に渡り、学習が難しいといわれています。
そこでサンプルコードがあることで、概念やアルゴリズムの理解がしやすいというメリットがあります。
たとえば、画像分類を学習したいとき、下記のようなサンプルがあることで、実際にコードを見て、それがどのように動作するのかを理解することができます。
import tensorflow as tf
# データを読み込む
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# モデルを定義する
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10)
])
# モデルをコンパイルする
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
# モデルをトレーニングする
model.fit(x_train, y_train, epochs=5)
# モデルを評価する
model.evaluate(x_test, y_test, verbose=2)
たとえば、上記ではデータの読み込みからモデルのトレーニング・評価までの一連の流れをしっかりと確認しながら学習できることがわかります。
特にTensorFlowはニューラルネットワークの構築など複雑な処理を行うので、サンプルでコードの意味を随時確認しながら学習に活かしていきましょう。
ポイント③:数学知識も学習できる
3つ目のポイントは数学知識も学習できることです。
フレームワークの学習に数学知識が必要かどうかは、使用するフレームワークやその目的によって異なりますが、TensorFlowでは微分や線形台数などの数学知識も必要となる処理が多いので、数学知識も併せて学習できる参考書がおすすめです。
たとえば、以下のようなとき数学知識を必要とします。
・線形回帰モデルの構築
線形回帰モデルを構築するには重みとバイアスを定義し、損失関数とオプティマイザーを指定して学習を行います。下記のように例題として、TensorFlowで簡単な線形回帰モデルを構築してみます。
import tensorflow as tf
# 入力データ
x = tf.constant([1, 2, 3, 4], dtype=tf.float32)
y = tf.constant([2, 4, 6, 8], dtype=tf.float32)
# 重みとバイアス
w = tf.Variable(0.0, dtype=tf.float32)
b = tf.Variable(0.0, dtype=tf.float32)
# モデル
def linear_regression(x):
return w * x + b
# 損失関数
def mean_squared_error(y_true, y_pred):
return tf.reduce_mean(tf.square(y_true - y_pred))
# オプティマイザー
optimizer = tf.optimizers.SGD(learning_rate=0.01)
# 学習
for i in range(100):
with tf.GradientTape() as tape:
y_pred = linear_regression(x)
loss = mean_squared_error(y, y_pred)
gradients = tape.gradient(loss, [w, b])
optimizer.apply_gradients(zip(gradients, [w, b]))
# 結果
print(w.numpy(), b.numpy())
線形回帰は予測モデルの構築などによく活用されているので、ディープラーニングや機械学習を本質から理解するためには必要不可欠な知識です。
このように、データサイエンスと数学の関連性を学びながらTensorFlowの学習に活かしていくことが重要です。
TensorFlow学習おすすめ参考書6選
ここからは編集部が厳選したTensorFlowを学べる良書を紹介していきます。
【おすすめ】TensorFlow2 TensorFlow & Keras対応 プログラミング実装ハンドブック
本書はPythonのインストール方法やif文/for文などの基礎知識にはじまり、TensorFlowの活用方法やデータ拡張処理まで基礎から応用まで一気通貫で学習できるので、初学者に非常におすすめです。
また、行列や勾配降下法の考え方も解説しており、TensorFlowで必要な数学知識も併せて学習することができるので、TensorFlowの学習で手戻りが少なくなるでしょう。
さらに、豊富なサンプルコードと例題で学んだ知識をすぐにアウトプットできる構成になっているので、知識が頭に定着しやすくなっています。
Pythonの基礎知識とTensorFlowの活用方法をどちらも学習できる参考書は数少ないので、Python知識に不安のある方は本書で学習するとよいでしょう。
【おすすめ】物体・画像認識と時系列データ処理入門 [TensorFlow2/PyTorch対応第2版]
本書はディープラーニングの基礎理論から2次元フィルター、転移学習、時系列データ、自然言語処理などディープラーニングの手法を網羅的に学習できるので、初学者におすすめの1冊です。
また、ベクトル、行列、微分、偏微分などTensorFlowに必要な数学知識も幅広く解説しているので、数学に不安のある方でも本質から難しい概念を理解できます。
さらに、リスト、関数、クラスなどPythonの基礎知識も併せて学習できるので、Pythonの基礎知識で手戻りすることなく、TensorFlow学習を進めることができます。
イラストや図も豊富にあり、ニューロンなど複雑な概念も直感的にイメージしやすいので、初学者でもつまずくことなく、学習できるでしょう。
【おすすめ】TensorFlowとKerasで動かしながら学ぶ ディープラーニングの仕組み ~畳み込みニューラルネットワーク徹底解説~
本書は「きちんとニューラルネットワークの原理から理解すること」「その原理をどのようにコードとして書くか」の2点を学習できるため、理論と実践を結び付けることで学習内容が定着しやすいので、初学者におすすめです。
ディープラーニングの代表ともいえる「畳み込みニューラルネットワーク(CNN)」を中心に解説しており、CNNの仕組みを根本から理解することができるので、ディープラーニングの土台作りとなるでしょう。
最小二乗法や勾配降下法などの数学知識も併せて学習できるので、数学知識に自信のない方でも手戻りなく、学習を進めることができます。
また、サンプルコードもGitHub上で多く公開されているので、ダウンロードしてすぐに活用することができます。そのため、実際に手を動かしながら学習したい方にも非常におすすめです。
scikit-learn、Keras、TensorFlowによる実践機械学習 第2版
本書は実務で扱う問題を通して、サンプルデータを使いながら機械学習の手法を体系立てて学ぶことができるので、学習内容が頭に定着しやすくなっています。
TensorFlowとKerasを使ったニューラルネットワークの構築と訓練、ニューラルネットワークアーキテクチャ、深層学習や強化学習、TensorFlowの分散処理のメカニズムや実装など幅広く学習できるので、機械学習をメインに学習したい方に非常におすすめです。
また、機械学習ライブラリのscikit-learnも解説しており、データの処理・クリーニングなどの基礎から、特徴量の選択や過学習、データの次元削減などの応用まで幅広く学習できます。
さらに、すべてのコードがGitHub上で公開されており、Jupyter Notebookを使って実際に試しながら学ぶことができます。
機械学習・ディープラーニングに欠かせないライブラリ・フレームワークを基礎から本書1冊で学習できるので、初学者に非常におすすめです。
改訂TensorFlow対応版 算数&ラズパイから始めるディープ・ラーニング
本書はTensorFlowのインストール方法からはじまり、CNN・RNN・オートエンコーダーの3つの重要アルゴリズムまでディープラーニングの土台作りに欠かせない知識を学習できます。
また、それぞれのアルゴリズムの実装方法をステップに分けて解説しているので、自分がどこまで理解できているのか瞬時にわかり、つまずきにくくなっています。
さらに、掲載しているコードの一つひとつにコードの意味も書いているので、コードがどのような働きをしているのか、一目で理解することができます。
そのため、コードの意味がわからないことが原因でつまずくことはないので、初学者の方も安心して学習できるでしょう。
TensorFlowではじめるDeepLearning実装入門
本書はニューラルネットワークの基礎、CNNやRNNはもちろん、転移学習を用いたキャプション生成までを学習できるので、本書1冊でTensorFlowをマスターできます。
また、TensorFlowの実装だけでなく、TensorFlowを活用したディープラーニングの構造までTensorFlowを基礎から応用まで網羅的に学習できます。そのため、本書がTensorFlowとディープラーニングの橋渡し役となるでしょう。
ただし、本書はTensorFlowのみの解説がメインであり、Pythonや数学の基礎知識に関する解説は少ないため、Pythonと数学の知識に自信があり、TensorFlowを深く学びたいという方におすすめです。
まとめ
TensorFlowを学習する参考書の選び方のポイントやおすすめ参考書を紹介してきました。自分に合った参考書は見つかったでしょうか。
TensorFlowはディープラーニングや機械学習には欠かせないフレームワークなので、データサイエンティストを目指す方にとってTensorFlowの学習は非常に有益です。本記事が学習を始めるきっかけになれば幸いです。
編集部ではPythonに関連する記事も公開しています。Pythonに興味のある方はぜひこちらの記事もご覧ください。