AI数理

画像生成技術の進化 ~GANからディフフュージョンモデルまで~

IT & AIテクノロジー

画像生成技術の進化 ~GANからディフフュージョンモデルまで~

こんにちは!株式会社Qualiteg研究部です! 今日は画像生成技術について投稿いたします。 みなさまご存じの通り人工知能による画像生成技術は、過去10年間で急速な進化を遂げました。 今年は2024年。ちょうど2014年に「GAN」がでて10年です。 テキスト系生成AIの勢いがすごい昨今ですが、画像生成AI、超解像AIからの動画生成AIなどコンピュータビジョンかいわいも大きく進化を遂げていますね。 本記事では、主にGenerative Adversarial Networks (GAN)とディフフュージョンモデルに焦点を当て、画像生成技術の歴史的な発展を振り返ります。特に、これらの技術が画像生成と超解像の分野でどのように応用されてきたかを詳しく見ていこうとおもいます。 ブログ本編の前に! ダイジェスト動画あります! 本ブログのダイジェストを以下の動画で語っておりますので、よろしかったらこちらもご覧くださいませ! GANとディフュージョンモデル GANとは GAN(Generative Adversarial Network)は、2014年にIan Goodf

By Qualiteg 研究部
推論速度を向上させる Speculative Decoding(投機的デコーディング)とは

IT & AIテクノロジー

推論速度を向上させる Speculative Decoding(投機的デコーディング)とは

こんにちは Qualiteg 研究部です。 投機的デコーディングとは何か? 投機的デコーディングは、大規模言語モデル(LLM)の推論速度を向上させる技術です。 たいていのモデルを1.4~2.0倍程度、高速化できることが報告されています。 このアプローチでは、小さなモデル(ドラフトモデル)を使用して初期の予測を行い、その結果を大きなモデル(ターゲットモデル)が検証することで、全体の推論プロセスを高速化します。 ざっくりいうと、 大きなモデルは計算負荷も高く計算速度も遅いので、まず、小さなモデルで高速に計算したあとで、その計算結果をうまくつかって大きなモデルでの計算負荷をさげ、スピードを向上させようというアイデアです。 基本的に大きなモデルと、小さなモデルはサイズ以外は基本的にまったく同じネットワーク構造をしていることが前提となります。 たとえば 70Bの Llama3 と 8B の Llama3 を組み合わせてつかうイメージです。 当然70B の Llama3 の推論計算のほうが 8B よりも重たくなりますので、小さい8BのLlama3 で先回りして推論計算することで

By Qualiteg 研究部
[AI数理]徹底的に交差エントロピー(7)

AI数理

[AI数理]徹底的に交差エントロピー(7)

おはようございます!(株) Qualiteg 研究部です。 今回は、交差エントロピーの計算をベクトルや行列で表現する方法について説明します! 8章 交差エントロピーとベクトル演算 そもそも、なぜ、交差エントロピーをベクトルや行列で表現したいのでしょうか? それは、実際にニューラルネットワークをコンピュータープログラムとして実装するときに、訓練データや予測値はベクトル(1次元配列)や行列(2次元配列)といったN階テンソル(N次元配列)の形式で取り扱われるからです。 なぜベクトルや行列かといえば、ニューラルネットワークの実用的な計算をするときにはデータを1件とりだしては、1件計算する のではなく、多くのデータをベクトル(1次元配列)や行列(2次元配列)やそれ以上の多次元配列に詰めたのちに、まとめてドカっと計算するからです。 (まとめてドカっと計算するのが得意な GPU があるからこそ、これだけ Deep Learning が進展した、ともいえます) そこで、今までで導出してきた交差エントロピーの計算をコンピュータで実装するときに備えて、 1次元配列 にしてみます。

By Qualiteg 研究部
LLMサンプリングにおける3つのペナルティ

ChatStream Guide

LLMサンプリングにおける3つのペナルティ

[付録]ペナルティの比較 ペナルティタイプ 目的 適用方法 ペナルティの例 Repetition Penalty 特定のトークンやフレーズが繰り返されるのを防ぐ。 過去に生成されたすべてのトークンのログ確率(logits)に対してペナルティを適用する。 例えば、あるトークンがすでに生成された場合、そのトークンのログ確率をペナルティ値で割る(乗算)か、ペナルティ値を引く(減算)。 Frequency Penalty 生成されたトークンの出現頻度に基づいてペナルティを適用し、頻繁に出現するトークンを抑制する。 各トークンが生成された回数に基づいてペナルティを適用する。トークンが出現するたびに、そのトークンの出現確率を低減させる。 トークンが出現するたびに、そのトークンのログ確率をペナルティ値で累積的に割る(乗算)か、ペナルティ値を累積的に引く(減算)。 Presence Penalty すでに生成されたトークンが再度出現するのを防ぐ。 トークンが一度でも生成されたかどうかに基づいてペナルティを適用する。一度生成されたトークンには再出現の際にペナルティが適用さ

By Qualiteg プロダクト開発部
[AI数理]徹底的に交差エントロピー(6)

AI数理

[AI数理]徹底的に交差エントロピー(6)

おはようございます!(株) Qualiteg 研究部です。 今回は、二値分類用の交差エントロピーについてみていきましょう! 7章 二値分類用 交差エントロピー 7-1. 二値分類用 交差エントロピー (データ1件対応版) さて、ここから、二値分類用の交差エントロピーを導きたいとおもいます。 二値分類は 入力されたデータが 2 つのうちどちらか、を予測するものです。 まず話をシンプルにするために、バッチ版ではなく、式 \((5.2)\) に示した 1件版の交差エントロピーの式を思い出します。 $$ E = - \sum_{k=1}^{K} t_{k} \log y_{k} \tag{5.2、再掲} $$ $$ \begin{aligned} &K:分類の数, t_{k}

By Qualiteg 研究部
LLM サービング効率化の為のPagedAttention

ChatStream Guide

LLM サービング効率化の為のPagedAttention

こんにちは、株式会社Qualitegプロダクト開発部です。 今日は 商用LLM サービングに欠かせない PagedAttention 技術をご紹介します はじめに PagedAttention は当社にとって非常に重要な技術です PagedAttentionを活用するとLLMでの文章生成において GPUメモリの利用効率をあげ 、そのぶん単位GPUあたりの同時に捌けるリクエストを増やすことができます。 当社は「ChatStream」という商用のLLMサービングプラットフォームを開発・提供しているため、多ユーザーからの同時リクエストによる高負荷環境でのLLMサービング(文章生成の提供)は、ドドド真ん中の課題ということになります。 PagedAttention登場以前の従来の並列生成はKVキャッシュとよばれる”リクエストごとに発生する大きなGPUメモリ消費”との戦いでした。 (KVキャッシュは transfomerのmodelを生で叩くときに past_key_values として登場します) つまりモデルのパラメータとは別に発生する推論時のメモリ消費です。 これが同時に

By Qualiteg プロダクト開発部
[AI数理]徹底的に交差エントロピー(5)

AI数理

[AI数理]徹底的に交差エントロピー(5)

おはようございます!(株) Qualiteg 研究部です。 今回は、前回から拡張して データN件対応版の多値分類用 交差エントロピー を実際のデータをみながら導いていきたいとおもいます! 6章 多値分類用 交差エントロピー (データN件対応版) 実際の学習では、いちどに複数件の訓練データを入力して得られた複数の結果をまとめて評価するバッチ学習を行うため、複数の訓練データから得られた結果を同時に計算できるバージョンの交差エントロピーも考えておきます。 以下のような複数の訓練データの場合を考えます。 複数の訓練データなので、1件ずつの訓練データを見分けられるように番号をふった データ番号 列を導入しました。みやすくするため正解のデータに背景色をつけています。 この4件のデータを順番にモデルに入れたときの出力を計算すると以下のようになりました。予測値 列を右に追加しています。 さて、この4件の交差エントロピーを求めてみます。 これらのデータから1つずつ交差エントロピーを計算して、その値を合計すれば、4件ぶんの交差エントロピーの合計値を求めることができるので、特に

By Qualiteg 研究部
[AI数理]徹底的に交差エントロピー(4)

AI数理

[AI数理]徹底的に交差エントロピー(4)

おはようございます!(株) Qualiteg 研究部です。 今回は、多値分類用の交差エントロピーを計算していきたいと思います! 5章 多値分類用 交差エントロピーの計算 (データ1件対応版) まず 交差エントロピー関数(標本データ1件ぶんバージョン) を再掲します。 $$ \ - \log L=\sum_{k=1}^{K} t_{k} \log y_{k} \tag{4.3、再掲} $$ $$ t_{k} :頻度, y_{k}:確率 $$ 式 \((4.3)\) の 交差エントロピー は 1件の標本データ に \(K\) 個の事象(が起こったか、起こらなかったか)が含まれていました。

By Qualiteg 研究部
[AI数理]徹底的に交差エントロピー(3)

AI数理

[AI数理]徹底的に交差エントロピー(3)

おはようございます!(株) Qualiteg 研究部です。 今回は、尤度関数から交差エントロピーを導いていきたいとおもいます! 4章 尤度関数から交差エントロピーを導く さて、今までは 20回ぶんサイコロを投げて、起こった事象(出た目が1なのか、2なのか、・・・、6なのか) を数えた結果を以下の表のようにまとめました。 では、こんどは、1回ぶんサイコロを投げたときどうのようになるかみてみます。 1回サイコロをなげた結果が 1の目 だった場合は、以下のように書くことができます。 (でた目のところに✔マークをいれただけです) さて、?だと計算にもっていきづらいので、出た目のところを \(1\) にして、出なかった目は \(0\) と置き換えることにします。 ( \(1\) が記載されている目は その目にとっては 頻度 = 確率 = \(1\) と考え、 \(0\) が記載されている目は、その試行では出なかったので、 頻度 = 確率 = \(0\) と考えると理解しやすいかもしれません。) すると、結果 列は以下のように

By Qualiteg 研究部
[AI数理]徹底的に交差エントロピー(2)

AI数理

[AI数理]徹底的に交差エントロピー(2)

おはようございます!(株) Qualiteg 研究部です。 早速、前回の続きをやっていきましょう! 2章 分類問題は「確率」の予測として解釈する Deep Learning やロジスティック回帰などで解きたい 分類問題 では、入力データがどのクラスに分類されるのかを予測します。 まず入力データが 何かに 分類される とはどういうことなのかを考えてみます。 たとえば、ある動物の画像を入力データとしたとき、その画像がイヌ、キツネ、オオカミ の3つのうちどれなのかを予測する 分類器 を考えます。 (分類器 は 入力と処理と出力があり、入力は画像データで、処理として ニューラルネットワーク や ロジスティック回帰 などの 計算処理 をおこない、分類結果を出力するプログラムコードと考えます) この 分類器 にたとえば 「イヌ」の画像を入力し、分類させた結果は 「イヌ」 とダイレクトに判定されるわけではありません。 ではどのように 分類するか

By Qualiteg 研究部
[AI数理]徹底的に交差エントロピー(1)

AI数理

[AI数理]徹底的に交差エントロピー(1)

おはようございます!(株) Qualiteg 研究部です。 今日からは交差エントロピーについて、徹底的に学んでいきたいとおもいます。 交差エントロピー関数の式は2つあるの? 本シリーズではは、機械学習で分類問題の損失関数としてよく使用される交差エントロピー関数をとりあげます。 実はこれまで学んできた 指数関数や対数関数の微分法は、この交差エントロピー関数を深く理解するためのものでした。 交差エントロピーがどのような性質をもっていて、どのように導かれていくのかを理解するのは今後のLLMの仕組み解明でも大いに役立つのでしっかりみていきたいとおもいます! さて、さっそくですが、 下の \((1)\) は 交差エントロピー関数 です $$ \ - \frac{1}{N} \sum_{i}^{N} \sum_{k}^{K} t_{ik} \log y_{ik} \tag{1} $$ 下の \((2)\) も、 交差エントロピー関数 です。 $$ \ - \frac{1}{N} \sum_{i}

By Qualiteg 研究部
[AI数理]対数関数の微分法・後編

AI数理

[AI数理]対数関数の微分法・後編

おはようございます!(株) Qualiteg 研究部です。 本日は対数関数の微分法の後編です! 今回で、対数関数の微分法をマスターしましょう! 2. 対数関数の公式 まず、対数関数の公式をおさえておきます。あとで対数関数の微分法の導出で使用します \(a^{0} = 1\) 、つまり \(a\) を \(0\) 乗すると \(1\) となるため $$ \log_a 1 = 0 \tag{2.1} $$ \(a^{1} = a\) 、つまり \(a\) を \(1\) 乗すると \(a\) となるため $$ \log_a a = 1 \tag{2.2} $$ 積の対数 $$ \log_a (X

By Qualiteg 研究部
[AI数理]対数関数の微分法・前編

AI数理

[AI数理]対数関数の微分法・前編

おはようございます!(株) Qualiteg 研究部です。 本日から2回にわたって対数関数について学んでいきましょう。 正確にいうと、対数関数の微分法を学びます。 対数関数って何だっけ? まず、対数関数というのは、「ある数 \( x \) が別の数 \( b \) を何回かけると \( x \) になるか」を調べる方法です。例えば、\( b \) が 2 で \( x \) が 8 の場合、2 を 3 回かけると 8 になります。この場合、数学的には「\( b \) の \( x \) に対する対数」と言います。 これを数式で表すと、次のようになります: $$ \log_b(x) = y $$ ここで \( b \) は底(

By Qualiteg 研究部
[AI数理] 指数関数

AI数理

[AI数理] 指数関数

おはようございます!(株) Qualiteg 研究部です。本日は指数関数を学びましょう。 対数関数の微分公式の導出でお役立ちなので、今回の出番となりました。 指数関数とは 指数関数は、繰り返しの掛け算を表す数学の式です。例えば、「2を3回掛ける」を考えると、これは \(2 \times 2 \times 2\) となり、結果は \(8\) です。数学的には、これを \(2^3 = 8\) と表現します。ここで \(2^3\) の形が指数関数であり、「 \(2\) 」が底、「\(3\)」が指数です。 指数関数は多くの自然現象や科学技術で見られる現象を表すのに非常に重要です。例えば、銀行の複利計算や細菌の増殖など、時間とともに増加する速度が速くなるような現象です。 指数関数はまた、数学において他の多くの概念や公式の基礎ともなっています。特に、対数関数の微分公式の導出には指数関数が不可欠です。対数関数の微分は、対数関数のグラフの傾きを求める計算方法です。この微分公式を理解するためには、指数関数の性質が重要です。 指数関数の重要な性質の一つに、

By Qualiteg 研究部
AI数理は Minecraftの夢を見る?

AI数理

AI数理は Minecraftの夢を見る?

みなさまこんにちは、(株) Qualiteg 研究部です。 LLM関連の論文を読んでいると、なぞの数式、なぞの記号がたくさんでてきて、めまいがすることはないでしょうか? 私も学生時代ニューラルネットを研究していましたが、それを理解するための数学的背景がミルフィーユのように多層になっており、面食らった記憶があります。 現代のLLMは、パーセプトロンや初期のニューラルネットの研究にくらべると、いや、分析系のディープラーニングベースAIの頃からみてもミルフィーユの層が10倍くらい厚く、LLMの仕組みを数学的に理解するには、その何重、何百という数学的理論基盤を理解しなければいけません。 (LLMを利用するだけなら、ミルフィーユをまるごと食べて「おいし~」って言っている状態ですが、じゃあ、その多層(の数理)になったミルフィーユを1層ずつ理解しながら作っていくのは食べるのにくらべてどれだけ大変か、ですね。) このように、LLMの実現には、機械学習の基礎編としての確率統計の話や、クラシックな機械学習の理論から、ディープラーニングで使う微分や離散化、RNN,LSTMなどを経てそこからトラ

By Qualiteg 研究部