Skip to content

ClasCat® AI Research

クラスキャット – 生成 AI, AI エージェント, MCP

Menu
  • ホーム
    • ClassCat® AI Research ホーム
    • クラスキャット・ホーム
  • OpenAI API
    • OpenAI Python ライブラリ 1.x : 概要
    • OpenAI ブログ
      • GPT の紹介
      • GPT ストアの紹介
      • ChatGPT Team の紹介
    • OpenAI platform 1.x
      • Get Started : イントロダクション
      • Get Started : クイックスタート (Python)
      • Get Started : クイックスタート (Node.js)
      • Get Started : モデル
      • 機能 : 埋め込み
      • 機能 : 埋め込み (ユースケース)
      • ChatGPT : アクション – イントロダクション
      • ChatGPT : アクション – Getting started
      • ChatGPT : アクション – アクション認証
    • OpenAI ヘルプ : ChatGPT
      • ChatGPTとは何ですか?
      • ChatGPT は真実を語っていますか?
      • GPT の作成
      • GPT FAQ
      • GPT vs アシスタント
      • GPT ビルダー
    • OpenAI ヘルプ : ChatGPT > メモリ
      • FAQ
    • OpenAI ヘルプ : GPT ストア
      • 貴方の GPT をフィーチャーする
    • OpenAI Python ライブラリ 0.27 : 概要
    • OpenAI platform
      • Get Started : イントロダクション
      • Get Started : クイックスタート
      • Get Started : モデル
      • ガイド : GPT モデル
      • ガイド : 画像生成 (DALL·E)
      • ガイド : GPT-3.5 Turbo 対応 微調整
      • ガイド : 微調整 1.イントロダクション
      • ガイド : 微調整 2. データセットの準備 / ケーススタディ
      • ガイド : 埋め込み
      • ガイド : 音声テキスト変換
      • ガイド : モデレーション
      • ChatGPT プラグイン : イントロダクション
    • OpenAI Cookbook
      • 概要
      • API 使用方法 : レート制限の操作
      • API 使用方法 : tiktoken でトークンを数える方法
      • GPT : ChatGPT モデルへの入力をフォーマットする方法
      • GPT : 補完をストリームする方法
      • GPT : 大規模言語モデルを扱う方法
      • 埋め込み : 埋め込みの取得
      • GPT-3 の微調整 : 分類サンプルの微調整
      • DALL-E : DALL·E で 画像を生成して編集する方法
      • DALL·E と Segment Anything で動的マスクを作成する方法
      • Whisper プロンプティング・ガイド
  • Gemini API
    • Tutorials : クイックスタート with Python (1) テキスト-to-テキスト生成
    • (2) マルチモーダル入力 / 日本語チャット
    • (3) 埋め込みの使用
    • (4) 高度なユースケース
    • クイックスタート with Node.js
    • クイックスタート with Dart or Flutter (1) 日本語動作確認
    • Gemma
      • 概要 (README)
      • Tutorials : サンプリング
      • Tutorials : KerasNLP による Getting Started
  • Keras 3
    • 新しいマルチバックエンド Keras
    • Keras 3 について
    • Getting Started : エンジニアのための Keras 入門
    • Google Colab 上のインストールと Stable Diffusion デモ
    • コンピュータビジョン – ゼロからの画像分類
    • コンピュータビジョン – 単純な MNIST convnet
    • コンピュータビジョン – EfficientNet を使用した微調整による画像分類
    • コンピュータビジョン – Vision Transformer による画像分類
    • コンピュータビジョン – 最新の MLPモデルによる画像分類
    • コンピュータビジョン – コンパクトな畳込み Transformer
    • Keras Core
      • Keras Core 0.1
        • 新しいマルチバックエンド Keras (README)
        • Keras for TensorFlow, JAX, & PyTorch
        • 開発者ガイド : Getting started with Keras Core
        • 開発者ガイド : 関数型 API
        • 開発者ガイド : シーケンシャル・モデル
        • 開発者ガイド : サブクラス化で新しい層とモデルを作成する
        • 開発者ガイド : 独自のコールバックを書く
      • Keras Core 0.1.1 & 0.1.2 : リリースノート
      • 開発者ガイド
      • Code examples
      • Keras Stable Diffusion
        • 概要
        • 基本的な使い方 (テキスト-to-画像 / 画像-to-画像変換)
        • 混合精度のパフォーマンス
        • インペインティングの簡易アプリケーション
        • (参考) KerasCV – Stable Diffusion を使用した高性能画像生成
  • TensorFlow
    • TF 2 : 初級チュートリアル
    • TF 2 : 上級チュートリアル
    • TF 2 : ガイド
    • TF 1 : チュートリアル
    • TF 1 : ガイド
  • その他
    • 🦜️🔗 LangChain ドキュメント / ユースケース
    • Stable Diffusion WebUI
      • Google Colab で Stable Diffusion WebUI 入門
      • HuggingFace モデル / VAE の導入
      • LoRA の利用
    • Diffusion Models / 拡散モデル
  • クラスキャット
    • 会社案内
    • お問合せ
    • Facebook
    • ClassCat® Blog
Menu

TensorFlow : Tutorials : Data representation : TensorFlow で大規模線形モデル

Posted on 04/05/2017 by Sales Information

TensorFlow : Tutorials : Data representation : TensorFlow で大規模線形モデル (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
更新日時 : 07/15/2018
作成日時 : 04/05/2017

* TensorFlow 1.9 でドキュメント構成が変わりましたので調整しました。
* 本ページは、TensorFlow の本家サイトの Tutorials – Data representation – Large-scale Linear Models with TensorFlow を翻訳した上で適宜、補足説明したものです:

  • https://www.tensorflow.org/tutorials/representation/linear

* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

序

tf.learn API は TensorFlow の線形モデルで作業するための (とりわけ) リッチなツール・セットを提供します。このドキュメントはこれらのツールの概要を提供します。以下を説明します :

  • 線形モデルとは何か。
  • 何故線形モデルを使用することを望むのか。
  • tf.learn は TensorFlow で線形モデルを構築することをどのように簡単にするのか。
  • 線形モデルを深層学習と両者の優位点を得るために結合するために tf.learn をどのように使用できるか。

この概要を読んで tf.learn 線形モデル・ツールが貴方に有用であるかを決定しましょう。そしてそれを試すために 線形モデル・チュートリアル を行ないます。この概要はチュートリアルからコード・サンプルを使用しますが、そのチュートリアルはコードをより詳細に通り抜けます。

この概要を理解するためには基本的な機械学習コンセプトと tf.learn にある程度精通していることは助けになるでしょう。

 

線形モデルとは何か?

線形モデルは予測を行なうために特徴の単一の重み付けられた総和を用います。例えば、人口のための年齢、教育の年数、そして週労働時間のデータを持つならば、それらの数の各々について重みを学習が可能で、それらの重み付けられた総和はある人の給与を見積もります。線形モデルを分類のために使うこともできます。

ある線形モデルでは重み付けられた総和をより便利な形式に変換します。例えば、出力を 0 と 1 の間に収めるためにロジスティック回帰は重み付けられた総和をロジスティック関数に差し込みます。しかし依然として各入力特徴のためには一つの重みだけを持ちます。

 

何故線形モデルを使用することを望むのか?

最近の研究が多くの層を持つより複雑なニューラルネットワークのパワーを誇示している時に何故そのように単純なモデルを使用することを望むのでしょうか?

線形モデルは :

  • 深層ニューラルネットと比較して、迅速にトレーニングします。
  • 非常に巨大な特徴セット上でも上手く動作できます。
  • 学習率 etc. のような多くの些細なものを必要としないアルゴリズムでトレーニング可能。
  • ニューラルネットよりもより簡単に解釈できてデバッグできる。各特徴に割り当てられた重みを検査して予測に大きなインパクトを持つものを見つけ出すことができます。
  • 機械学習について学習のための良い開始点を提供します。
  • 産業界で広く使われています。

 

tf.learn は線形モデルの構築をどのように手助けするか?

線形モデルは、特別な API の助けなしに TensorFlow でスクラッチから構築できます。けれども tf.learn は効果的な大規模な (large-scale) 線形モデルを構築することを簡単にする何某かのツールを提供します。

特徴カラムと変換

線形モデルを設計する作業の多くは生データを適切な入力特徴に変換することから成ります。tf.leran はこれらの変換を可能にするために FeatureColumn 抽象を使用します。FeatureColumn はデータの単一の特徴を表します。

FeatureColumn は ‘height’ のような量を表すかもしれません、あるいはそれは ‘eye_color’ のようなカテゴリを表すかもしれません、ここで値は {‘blue’, ‘brown’, ‘green’} のような離散的な可能性のセットから抽出されます。

‘height’ のような連続的な特徴と ‘eye_color’ のようなカテゴリカル特徴の両者のケースで、データの単一の値はモデルへの入力となる前に数字のシークエンスに変換されるかもしれません。FeatureColumn 抽象は、この事実にもかかわらず特徴を単一の意味のあるユニットとして操作可能にします。変換を指定できてそしてモデルに供給するテンソルにおいて特定のインデックスを扱うことなしに含める特徴を選択できます。

スパース・カラム (疎なカラム, Sparse columns)

線形モデルのカテゴリカル特徴は典型的にはスパース・ベクトルに変換されます、そこでは各可能な値は相当するインデックスまたは id を持ちます。例えば、3つの可能な目の色だけがあるとすれば ‘eye_color’ を長さ3のベクトルとして表すことができます : ‘brown’ は [1, 0, 0] になり、’blue’ は [0, 1, 0] になり、そして ‘green’ は [0, 0, 1] となるでしょう。これらのベクトルは “スパース (疎)” と呼ばれます、何故ならば可能な値のセットが (全ての英単語のように) 非常に大きいときこれらは非常に長く、多くはゼロだからです。

tf.learn 線形モデルを使用するためにスパース・カラムを使用する必要がない一方で、線形モデルの強みの一つは巨大なスパース・ベクトルを扱う能力です。スパース特徴は tf.learn 線形モデル・ツールのための主要なユースケースです。

スパース・カラムをエンコードする

FeatureColumn はカテゴリカル値のベクトルへの変換を自動的に処理します、次のようなコードで :

eye_color = tf.contrib.layers.sparse_column_with_keys(
  column_name="eye_color", keys=["blue", "brown", "green"])

ここで eye_color はソースデータのカラムの名前です。

全ての可能な値が分からないカテゴリカル特徴のために FeatureColumns を生成することもできます。このケースのためには sparse_column_with_hash_bucket() を使用します、これはインデックスを特徴値に割り当てるために hash 関数を使用します。

education = tf.contrib.layers.sparse_column_with_hash_bucket(\
    "education", hash_bucket_size=1000)
特徴クロス (Feature Crosses)

線形モデルは独立的な重みを別々の特徴に割り当てませんので、特徴値の特定の組み合わせの相対的な重要度を学習できません。特徴 ‘favorite_sport’ と特徴 ‘home_city’ を持ちそしてある人が赤色を着るのが好きかどうかを予測しようとする場合、その線形モデルは St. Louis からの野球ファンが特別に赤色を着るのが好きかを学習することはできないでしょう。

新しい特徴 ‘favorite_sport_x_home_city’ を作成することでこの制限を回避できます。与えられた人のためのこの特徴の値は2つのソース特徴の値の単なる結合です :例えば、’baseball_x_stlouis’ です。この類の組み合わせ特徴は特徴クロスと呼ばれます。

crossed_column() メソッドは特徴クロスをセットアップすることを容易にします :

sport = tf.contrib.layers.sparse_column_with_hash_bucket(\
    "sport", hash_bucket_size=1000)
city = tf.contrib.layers.sparse_column_with_hash_bucket(\
    "city", hash_bucket_size=1000)
sport_x_city = tf.contrib.layers.crossed_column(
    [sport, city], hash_bucket_size=int(1e4))

連続的なカラム (Continuous columns)

連続的な特徴も次のように指定できます :

age = tf.contrib.layers.real_valued_column("age")

単一の実数として、連続的な特徴はしばしばモデルに直接的な入力となりますが、tf.learn はこの類のカラムに対しても有用な変換を提案します。

バケット化 (Bucketization)

バケット化は連続的なカラムをカテゴリカル・カラムに変換します。この変換は特徴クロスで連続的な特徴を使用することを可能しますし、また特定の値範囲が特定の重要度を持つケースを学習できます。

バケット化は可能な値の範囲をバケットと呼ばれる部分範囲 (subrange) に分割します :

age_buckets = tf.contrib.layers.bucketized_column(
    age, boundaries=[18, 25, 30, 35, 40, 45, 50, 55, 60, 65])

値が収まるバケットはその値のためのカテゴリカル・ラベルとなります。

入力関数 (Input function)

FeatureColumns は、データをどのように表して変換するかを示す、モデルの入力データのための仕様を提供します。しかしそれらはデータ自身は提供しません。入力関数を通してデータを提供します。

入力関数はテンソルの辞書を返さなければなりません。各キーは FeatureColumn の名前に相当します。各キーの値は全てのデータインスタンスに対するその特徴値を含むテンソルです。入力関数のより包括的な全体像については Building Input Functions with tf.contrib.learn を、そして入力関数のサンプル実装のためには linear models tutorial code の input_fn を参照してください。

この入力関数は fit() と evaluate() 呼び出しに渡されて次のセクションで説明されるように、トレーニングとテスティングを初期化します。

線形 estimators

tf.learn の estimator クラスは回帰と分類モデルのための統一されたトレーニングと評価 harness (馬具) を提供します。それらはトレーニングと評価ループの詳細を世話してユーザにモデル入力とアーキテクチャにフォーカスすることを可能にします。

線形 estimator を構築するためには、tf.contrib.learn.LinearClassifier estimator か tf.contrib.learn.LinearRegressor estimator を使用できます、それぞれ分類と回帰のためのものです。

全ての tf.learn estimator と同様に、これらの estimator を実行するためには単に :

  1. estimator クラスをインスタンス化します。2つの線形 estimator クラスのためには、FeatureColumns のリストをコンストラクタに渡します。
  2. それをトレーニングするためには estimator の fit() メソッドを呼び出します。
  3. どのようにそれを行なうかを見るためには estimator の evaluate() メソッドを呼び出します。

例えば :

e = tf.contrib.learn.LinearClassifier(feature_columns=[
  native_country, education, occupation, workclass, marital_status,
  race, age_buckets, education_x_occupation, age_buckets_x_race_x_occupation],
  model_dir=YOUR_MODEL_DIRECTORY)
e.fit(input_fn=input_fn_train, steps=200)
# Evaluate for one step (one pass through the test data).
results = e.evaluate(input_fn=input_fn_test, steps=1)

# Print the stats for the evaluation.
for key in sorted(results):
    print "%s: %s" % (key, results[key])

Wide and deep learning

tf.learn API はまた線形モデルと深層ニューラルネットワークを一緒にトレーニングすることを可能にする estimator クラスもまた提供します。この新規なアプローチはキー特徴を “記憶” する線形モデルの能力とニューラルネットの一般化する能力を結合します。この “wide and deep” モデルの類を作成するためには tf.contrib.learn.DNNLinearCombinedClassifier を使用します :

e = tf.contrib.learn.DNNLinearCombinedClassifier(
    model_dir=YOUR_MODEL_DIR,
    linear_feature_columns=wide_columns,
    dnn_feature_columns=deep_columns,
    dnn_hidden_units=[100, 50])

更なる情報のためには、Wide and Deep Learning チュートリアル を参照してください。

 

以上

クラスキャット

最近の投稿

  • LangGraph 0.5 on Colab : Get started : クイックスタート
  • LangGraph on Colab : SQL エージェントの構築
  • LangGraph on Colab : マルチエージェント・スーパーバイザー
  • LangGraph on Colab : エージェント型 RAG
  • LangGraph : 例題 : エージェント型 RAG

タグ

AutoGen (13) ClassCat Press Release (20) ClassCat TF/ONNX Hub (11) DGL 0.5 (14) Eager Execution (7) Edward (17) FLUX.1 (16) Gemini (20) HuggingFace Transformers 4.5 (10) HuggingFace Transformers 4.6 (7) HuggingFace Transformers 4.29 (9) Keras 2 Examples (98) Keras 2 Guide (16) Keras 3 (10) Keras Release Note (17) Kubeflow 1.0 (10) LangChain (45) LangGraph (24) MediaPipe 0.8 (11) Model Context Protocol (16) NNI 1.5 (16) OpenAI Agents SDK (8) OpenAI Cookbook (13) OpenAI platform (10) OpenAI platform 1.x (10) OpenAI ヘルプ (8) TensorFlow 2.0 Advanced Tutorials (33) TensorFlow 2.0 Advanced Tutorials (Alpha) (15) TensorFlow 2.0 Advanced Tutorials (Beta) (16) TensorFlow 2.0 Guide (10) TensorFlow 2.0 Guide (Alpha) (16) TensorFlow 2.0 Guide (Beta) (9) TensorFlow 2.0 Release Note (12) TensorFlow 2.0 Tutorials (20) TensorFlow 2.0 Tutorials (Alpha) (14) TensorFlow 2.0 Tutorials (Beta) (12) TensorFlow 2.4 Guide (24) TensorFlow Deploy (8) TensorFlow Get Started (7) TensorFlow Graphics (7) TensorFlow Probability (9) TensorFlow Programmer's Guide (22) TensorFlow Release Note (18) TensorFlow Tutorials (33) TF-Agents 0.4 (11)
2017年4月
月 火 水 木 金 土 日
 12
3456789
10111213141516
17181920212223
24252627282930
« 3月   5月 »
© 2025 ClasCat® AI Research | Powered by Minimalist Blog WordPress Theme