独占 | R で Keras と TensorFlow を使用してディープラーニング モデルを構築する方法を教えます

独占 | R で Keras と TensorFlow を使用してディープラーニング モデルを構築する方法を教えます

[[197801]]

導入:

R と Python のどちらを選択するかは、常に熱く議論されているトピックです。機械学習の世界も言語の好みによって分かれています。しかし、ディープラーニングの人気が高まるにつれ、バランスは徐々に Python に傾いてきました。これは、これまでのところ Python には、R にはないディープラーニング リソース ライブラリとフレームワークが多数あるためです。

私が個人的に R から Python に切り替えたのは、R だけを使用して機械学習の世界をさらに深く理解したいと思ったからです。これは R だけではほとんど不可能でした。しかし、それだけです!

R での Keras の実装により、言語選択の争いが再び中心的な位置に戻ってきました。 Python は徐々にディープラーニングモデリングのデフォルト言語となりつつありますが、TensorFlow (CPU と GPU の両方に対応) をバックエンドとする R の Keras フレームワークがリリースされたことで、ディープラーニングの分野でも R と Python の舞台を巡る戦いが再び始まりました。

次に、R で TensorFlow に基づく Keras フレームワークをインストールする方法を確認し、RStudio で従来の MNIST データセットに基づく最初のニューラル ネットワーク モデルを構築します。

コンテンツ:

  • TensorFlow をバックエンドとして Keras フレームワークをインストールする
  • RでKerasを使用してさまざまな種類のモデルを構築できます
  • R の MLP を使用して MNIST 手書き数字を分類する
  • MNIST の結果を Python の同等のコードと比較する
  • 結論

1. TensorFlowをバックエンドとしてKerasフレームワークをインストールする

RStudio に Keras をインストールする手順は非常に簡単です。以下の手順に従うだけで、R で最初のニューラル ネットワーク モデルを構築できるようになります。

  1. install.packages( "devtools" )
  2.  
  3. devtools::install_github( "rstudio/keras" )

上記の手順により、Github リポジトリから Keras がダウンロードされます。次に、keras を R にロードし、TensorFlow をインストールします。

  1. ライブラリ(keras)

デフォルトでは、RStudio は TensorFlow の CPU バージョンをロードします。 TensorFlow の CPU バージョンが正常にロードされない場合は、次のコマンドを使用してダウンロードします。

  1. インストール_tensorflow()

単一ユーザーまたはデスクトップ システムに GPU サポート付きの TensorFlow をインストールするには、次の手順に従います。

  1. install_tensorflow(gpu= TRUE )を実行します。

マルチユーザーインストールについては、このガイドを参照してください: https://tensorflow.rstudio.com/installation_gpu.html。

現在、RStudio には keras と TensorFlow の両方がインストールされています。まず、R で最初のニューラル ネットワークを構築し、MNIST データセットを処理してみましょう。

2. Rでkerasを使用して構築できるさまざまな種類のモデル

以下は、RでKerasを使用して構築できるモデルのリストです。

  1. 多層パーセプトロン
  2. 畳み込みニューラルネットワーク
  3. リカレントニューラルネットワーク
  4. スキップグラムモデル
  5. 事前トレーニング済みモデル(VGG16、RESNETなど)を使用する
  6. 事前学習済みモデルの微調整

まず、隠し層が 1 つだけのシンプルな MLP モデルを構築して、手書きの数字を分類してみましょう。

3. R の MLP を使用して MNIST 手書き数字を分類する

  1. #kerasライブラリの読み込み
  2.  
  3. ライブラリ(keras)
  4.  
  5. #keras に組み込まれている mnist データセットをロードする
  6.  
  7. データ<-dataset_mnist()
  8.  
  9. #トレーニングファイルテストファイルを分離する
  10.  
  11. train_x<-データ$train$x
  12.  
  13. train_y<-データ$train$y
  14.  
  15. test_x<-データ$テスト$x
  16.  
  17. test_y<-データ$test$y
  18.  
  19. rm(データ)
  20.  
  21. # 2D配列を1D配列変換してMLP入力し行列を正規化する
  22.  
  23. train_x <- 配列(train_x, dim = c(dim(train_x)[1], prod(dim(train_x)[-1]))) / 255
  24.  
  25. test_x <- 配列(test_x, dim = c(dim(test_x)[1], prod(dim(test_x)[-1]))) / 255
  26.  
  27. #keras の組み込み関数を使用して、ターゲット変数を 1 回だけホットエンコードされたベクトル変換します 
  28.  
  29. train_y<-to_categorical(train_y,10)
  30.  
  31. test_y<-to_categorical(test_y,10)
  32.  
  33. #Keras シーケンシャル モデルの定義
  34.  
  35. モデル <- keras_model_sequential()
  36.  
  37. # 入力層 1 つ [784 ニューロン]、ドロップアウト率 0.4隠れ層 1 つ [784 ニューロン] 出力1 つ[10 ニューロン]モデルを定義
  38.  
  39. #つまり0から9までの数字
  40.  
  41. モデル %>%
  42.  
  43. レイヤー密度(単位 = 784、入力形状 = 784) %>%
  44.  
  45. レイヤードロップアウト(率=0.4)%>%
  46.  
  47. レイヤーアクティベーション(アクティベーション = 'relu' ) %>%
  48.  
  49. レイヤー密度(単位 = 10) %>%
  50.  
  51. レイヤーアクティベーション(アクティベーション = 'softmax' )
  52.  
  53. #メトリック= 精度オプティマイザーをAdamとして定義したモデルをコンパイルします
  54.  
  55. モデル %>% コンパイル(
  56.  
  57. 損失 = 'カテゴリクロスエントロピー'
  58.  
  59. オプティマイザー = 'adam'
  60.  
  61. メトリック = c( '精度' )
  62.  
  63.  
  64. #トレーニングデータセットにモデルを適合させる
  65.  
  66. モデル %>% fit(train_x, train_y, エポック = 100, batch_size = 128)
  67.  
  68. #クロスバリデーションデータセットでのモデルの評価
  69.  
  70. loss_and_metrics <- モデル %>% 評価(test_x、test_y、batch_size = 128)

上記のコードは、99.14% のトレーニング精度と 96.89% の検証精度を達成しました。このコードを i5 プロセッサで実行すると、トレーニング実行が完了するまでに 13.5 秒かかりますが、TITANx GPU では検証精度は 98.44% に達し、実行あたりのトレーニング時間は平均 2 秒です。

4. keras を使用して MLP モデルを構築する — R と Python

より良い比較のために、私は Python を使用して上記の MINIST 分類問題を解きました。 R はプロセス (conda インスタンス) を作成し、その中で keras を実行するため、結果に違いはありません。ただし、次の同等の Python コードを試すことはできます。

  1. #MLPモデル必要なライブラリをインポートする
  2.  
  3. kerasをインポートする
  4.  
  5. keras.modelsからSequentialをインポートする
  6.  
  7. numpyをnpとしてインポートする
  8.  
  9. #kerasからMNISTデータセットを読み込む
  10.  
  11. keras.datasetsからmnistをインポートする
  12.  
  13. (x_train, y_train)、(x_test, y_test) = mnist.load_data()
  14.  
  15. #x_train、y_train、x_test y_testMLP入力適合するように再形成し  出力寸法
  16.  
  17. x_train = np.reshape(x_train,(x_train.shape[0],-1))/255
  18.  
  19. x_test = np.reshape(x_test,(x_test.shape[0],-1))/255
  20.  
  21. pandasをpdとしてインポートする
  22.  
  23. y_train = pd.get_dummies(y_train)
  24.  
  25. y_test = pd.get_dummies(y_test)
  26.  
  27. #トレーニングテストターゲット変数ワンホットエンコーディングを実行する
  28.  
  29. y_train = np.array(y_train)
  30.  
  31. y_test = np.array(y_test)
  32.  
  33. #入力層 1 つ [784 ニューロン]、ドロップアウト率 0.4隠れ層 1 つ [784 ニューロン] 出力1 つ[10 ニューロン]を持つモデルの定義
  34.  
  35. モデル=シーケンシャル()
  36.  
  37. keras.layersからDenseをインポート
  38.  
  39. モデルを追加します(Dense(784, input_dim=784, activation= 'relu' ))
  40.  
  41. keras.layers.core.Dropout(レート=0.4)
  42.  
  43. モデルを追加します(Dense(10,input_dim=784,activation= 'softmax' ))
  44.  
  45. # Adam オプティマイザー精度を基準としてモデルをコンパイルする
  46.  
  47. model.compile(損失= 'categorical_crossentropy' 、オプティマイザー= "adam" 、メトリック=[ 'accuracy' ])
  48.  
  49. # モデルの適合検証の実行
  50.  
  51. モデルを適合(x_train、y_train、エポック=50、バッチサイズ=128、検証データ=(x_test、y_test))

上記のモデルは、同じ GPU 上で 98.42% の検証精度を達成しました。したがって、最初に推測したとおり、結果は同じです。

V. 結論

これが R で構築された最初のディープラーニング モデルである場合は、プロセスを楽しんでいただければ幸いです。非常にシンプルなコードを使用して、手書きの値を 98% の精度で分類できます。これにより、機械学習の分野を探求する十分な動機が得られるはずです。

Python で keras ディープラーニング フレームワークを使用したことがある場合は、R の keras フレームワークの構文と構造が Python のものと非常に似ていることがわかります。実際、R の keras パッケージは conda 環境を作成し、その環境で keras を実行するために必要なものをすべてインストールします。しかし、私がさらに興奮するのは、データ サイエンティストが R を使用して現実の状況に合わせたディープラーニング モデルを構築しているのを見ることです。諺にあるように、競争は決して終わらない。

<<:  ひどい、顔認識の練習のための40行のコード

>>:  人工知能やビッグデータ製品の開発において、特に注意すべき点は何でしょうか?

ブログ    

推薦する

機械学習チートシートを使用して難しい問題を解決します。できますか?

機械学習の初心者であっても、中級プログラマーであっても、この質問に戸惑うかもしれません。チートシート...

速度が1000倍になりました!拡散モデルは物質の錬金術プロセスを予測し、システムが複雑になればなるほど加速が大きくなる

拡散モデルを使用して化学反応を予測すると、速度が1,000 倍向上します。かつてはコンピューターで計...

Facebookの新しいAIモデルは、英語以外の言語から英語以外の言語に直接翻訳できる

海外メディアの報道によると、機械翻訳技術は誕生以来長い道のりを歩んできた。 Google のような翻...

...

Kaggle で競争する方法、全プロセスを解説

導入Kaggle は機械学習のコンペティションで最も有名なウェブサイトです。 Kaggle コンテス...

AIによる顔を変える技術によって危害を受けるのではないかと心配ですか?怖がらないで!ディープフェイク偽造対策チームが到着

ディープフェイクは登場以来、人間性の暗い側面へと向かっています。 Bステーションのユーザーは、陸小玲...

Google の時間は残りわずか: 18 歳の従業員が辞職し、経営陣を非難

インターネット企業の中で、Google は間違いなく勝者であり、方向性をリードする企業です。同社の技...

...

C# のデータ構造とアルゴリズムにおけるツリーの役割を紹介します

C# データ構造とアルゴリズムツリーまず、Windows でコマンド ラインに「tree」と入力しま...

AIビッグモデルの核となる概念を一挙に解説する人気科学記事

写真トークン、ベクトル、埋め込み、アテンション、これらの AI モデル用語は、いつも馴染みがありそう...

...

ChatGPTの収益成長は阻害されている:モバイルアプリのダウンロードは急増しているが、拡大は遅い

10月10日、最近のレポートによると、OpenAIの人工知能チャットボットChatGPTの収益成長が...

デジタル変革と人工知能

[[415031]]今日のビジネスにおける変化の最大の原因は、デジタル変革と呼ばれる取り組みです。つ...