udeo_business

AI、IT、最新技術、企業、コンサル、ビジネス

Googleの本気AI「Gemini」は、手書きの領収書のOCRとして使えるのか

はじめに

Google日本法人は2023年12月7日、最新AIモデル「Gemini」を発表しました。

テキスト、画像、音声、動画、コードなど複数の情報形式を扱えるマルチモーダルを実現するために1から設計したとのことです。

Geminiを試すには

現時点だと英語版Google Bardで試すことが可能です。

日本に居ても、下記設定ページで言語を「English」に設定、オプションを選択で「United States」を選択することで利用可能なようです。

Experiment updatesに下記が表示されたので問題なさそうです。

2023.12.06

Bard is getting its biggest upgrade yet with Gemini Pro

  • What: Starting today, we’re introducing Gemini Pro in Bard, for Bard’s biggest upgrade yet. We’ve specifically tuned Gemini Pro in Bard to be far more capable at things like understanding and summarizing, reasoning, coding, and planning. You can try out Bard with Gemini Pro for text-based prompts, with support for other modalities coming soon. It will be available in English in more than 170 countries and territories to start, and come to more languages and places, like Europe, in the near future.
  • Why: Today, Google introduced GeminiOpens in a new window, the most capable AI model in the world. Gemini unlocks new ways to create, interact and collaborate with Bard.

実際にOCRを試してみた

サンプルの手書きの領収書を使ってOCR機能を試してみました。

Q:

Read the contents of the receipt and create a list of items and contents.

TurboCASH5 - USA - Online Help

 

A:

The receipt is from Handyman Hardware Store and shows that Mr. A.B. Green purchased the following items on March 16, 2016:

  • Hammer
  • Saw
  • Drill
  • Hammerhead
  • Saw
  • Drill
  • Saw

The total amount of the purchase was 2000 Rands.

The image also shows that the receipt was generated using TurboCASH5 software.

感想

OCRは手書きも対応できてますね、お店の名前からハンマーやドリルなど明細項目をクリエイトしてくれています。領収書作成のソフトウェアを答えているのがおもしろいです。

 

LLMはマルチモーダルの時代に突入ですね、色々と苦しくなる会社が出てきそうです。

それでは。

領収書サンプル:TurboCASH5 - USA - Online Help

強化学習とは

強化学習とは

強化学習とは、機械学習の一つで、エージェントが環境とやり取りしながら報酬を最大化するための適切な行動を学習する仕組みです。
自動運転自動車の例を交えながら、全体像を捉えるために、強化学習の基本的な概念と学習プロセスを簡単に説明します。

強化学習の基本要素

エージェント(Agent)

自動運転車(自動運転制御システム)がエージェントとなります。 エージェントは環境と相互作用し、状態の観測と行動の選択を通じて目標を達成しようとします。

環境(Environment)

道路、交通、天候など自動運転車が走行する要素全般が環境を構成します。

状態(State)

エージェントのその瞬間における速度や信号の色などの状況。報酬に影響を与える要因や情報の集合となります。

観測(Observation)

カメラ、センサーから得られた情報を通じて状態を把握します。

行動(Action)

アクセル、ブレーキ、ハンドルのような制御の手段。エージェントはこれらの行動を選択し、環境に影響を与えます。

報酬(Reward)

エージェントが選択した行動に対する評価基準。安全な運転やスムーズな走行などで報酬を得るよう報酬関数を作成します。

学習プロセス

価値(Value

エージェントが状態や行動に対してどれだけ良いかを示す指標のことです。

エージェントは報酬のフィードバックをもとに、状態価値関数(状態の価値)や行動価値関数(状態と行動の組み合わせの価値)を学習します。
学習のための代表的なアルゴリズムとして、状態価値関数にはモンテカルロ法、行動価値関数にはQ学習 (Q-Learning) などがあります。Q学習では、状態と行動の組み合わせに対する価値(Q値)を学習します。

方策(Policy)

エージェントが特定の状態においてどのような行動を選択するかを定義する戦略やルールの集合のことです。

エージェントは報酬のフィードバックをもとに、方策関数を学習します。
ある状態において常に同じ行動を選択する確定的方策(赤信号は停止する など)とある状態において複数の行動を確率的に選択する確率的方策があります。
代表的なアルゴリズムとして、確率的方策では方策勾配法(Policy Gradient Methods)などがあります。確定的方策では通常、深層学習ベースの手法が利用されます。

推論プロセス

学習済みの価値関数が推論時に使用されます。状態に対して最も高い価値を持つ行動が選択され、エージェントは最適な行動を実行します。
学習済みの方策関数が推論時に使用されます。状態に応じて確率的に行動が選択され、エージェントは柔軟に対応できます。

まとめ

強化学習では、エージェントが環境とやり取りしながら価値関数や方策を学習し、推論時にはそれらを活用して最適な行動を選択していきます。

Azure OpenAI Service ChatGPT のファインチューニングについて

はじめに

ChatGPTの活用を検討する中で、よく耳にするキーワードが「ファインチューニング」です。 この記事では、その詳細と具体的な使われ方を解説します。

ファインチューニング(微調整)とは

ファインチューニングは、事前学習モデルに対して、新たなデータで追加学習を行い、モデルのパラメータ(重み)を微調整する手法です。
具体的には、学習済みモデルに対して、層の追加、一部またはすべての層を再訓練しパラメータを永続的に変更します。 特定のドメインやタスクにおいて、モデルの最適化やプロンプトの効率化を目指す場合、ファインチューニングの適用を検討します。 ただし、多数のパラメータに対して適切に調整を行うには、大量の学習データが必要となります。

ファインチューニング以外のアプローチ(転移学習とフューショット学習(Few-shot Learning))

転移学習とは

転移学習は、ファインチューニングとプロセスが似ていますが、既存層のパラメータは変更せず(フリーズ)、追加した出力層のパラメータのみを変更する点が異なります。学習データ量が多くない場合の選択肢となります。

フューショット学習とは

フューショット学習は、ファインチューニングとプロセスが異なります。学習済モデルに対する再訓練(パラメータ変更)は行いません。 一般的な特徴空間上での関連性やパターンを利用して、メタ学習などのアプローチにより、少量のデータで新しいタスクを学習させる手法です。 非常に少ないデータで対応することが可能です。
OpenAIから発表された論文「Language Models are Few-Shot Learners」では、GPT-3でZero/One/Few-shot learningを行ったシナリオ試験の結果が記載されており、パラメータの変更は行わず、多くのデモンストレーションを与えることで、多様なタスクを遂行できることが示されています。

Azure OpenAI Serviceのモデル微調整について

公式マニュアル「微調整によってモデルをカスタマイズする」 learn.microsoft.com

2023/10/29現在、gpt-35-turbo-0613の場合、データセットの形式は下記のようなJSON形式となってます。データセットを用意してモデル微調整する機能が提供されています。

{"messages": [{"role": "system", "content": "あなたは織田信長です"}, {"role": "user", "content": "友達は?"}, {"role": "assistant", "content": "家康は幼馴染で信頼関係のある仲じゃ"}]}
{"messages": [{"role": "system", "content": "あなたは織田信長です"}, {"role": "user", "content": "最大のライバルは?"}, {"role": "assistant", "content": "やはり、甲斐の武田信玄じゃろう"}]}
{"messages": [{"role": "system", "content": "あなたは織田信長です"}, {"role": "user", "content": "好物は?"}, {"role": "assistant", "content": "実はうなぎが大好きじゃ"}]}
・・・

DALL-E3で作った女性画像に対して、HeyGenを使って声と動作を吹き込みました

はじめに

以前、DALL-E3で女性のポートレートを作成し、下記記事で紹介しました。

ChatGPTと同じく生成系の画像生成AIのOpen AIのDALL-E 3とGoogle CloudのImagenについて比較を試みた - udeo_business (hatenablog.com)

今回は、その画像を使い、HeyGenを使って音声と動作を吹き込みました。

利用した写真

HeyGenを利用

HeyGenに人物画像を取り込み、セリフをテキスト入力して、声の種類を選択しただけというシンプルな設定を行いました。

HeyGen - AI Video Generator

2回まで無料で試すことができます。

 

結果

Submitを押すと、表情と音声が吹き込まれた動画が作成されました。

https://x.com/iwatepoint/status/1718076735655436778?s=20

ChatGPTの仕組みを簡潔に整理した

はじめに

自然言語処理NLP)は進化中の技術分野で、中心的な存在としてOpenAIのChatGPTがあります。 ChatGPTは、GPT-4のような自然言語モデル(LLM)を中心に動作しており、その基盤技術としてTransformerアーキテクチャが使用されています。
GPTやTransformerについて、仕組みの要点を簡潔に整理しました。

Transformerアーキテクチャ


Transformerは2017年にGoogleが発表した「Attention Is All You Need」で紹介されたエンコーダ・デコーダ構造を持ちます。 従来のリカレントニューラルネットワーク(RNN)が持っていた課題(長期記憶の難しさと直列処理縛り)を解消しました。

主要技術要素

Positional Encoding

各単語の順序や位置をベクトルとしてエンコードし、順序情報を持たないAttentionメカニズムに位置情報を提供します。

Self-Attention

入力された各単語が、他のすべての単語とどれだけ関連しているかを計算し、文脈を捉えます。また、各要素が独立して計算されるため、並行処理により効率的な学習を可能にします。

Multi-Head Attention

複数回Attentionを行い、異なる「視点」からの情報を統合して、より豊富な文脈情報を効率的にキャッチします。

ChatGPTの学習方法

  • GPTはTransformerアーキテクチャデコーダ部分のみを採用してます。対照的に、GoogleのBERTはエンコーダ部分を利用しています。
  • GPTは最初に大規模なテキストデータセット事前学習をSelf-Attentionにより効率的に行います。この段階で、モデルは文法、語彙、さまざまな情報を学習します。入力した文章から続く文章を予測し出力することが可能となります。
  • 事前学習後、モデルは特定のタスクに対応できるようファインチューニング(微調整)を行います。対話生成に必要なパラメータを調整します。
  • 人間の評価者のフィードバックを利用して、あるプロンプトに対する複数のモデル出力の優先順位を定義した報酬モデルを構築します。
  • 得られた報酬モデルを使用して、元のGPTモデルを再度訓練します。これは強化学習の一形態で、モデルはより高い報酬を得る出力を生成するように学習します。


ChatGPTは、Transformerのデコーダをベースに、Self-Attentionメカニズムと大規模データを活用し、効率的で高度な文脈理解能力を持つモデルを構築しています。そして特定の学習戦略や人間のフィードバックを利用した強化学習を通じて、その性能を最大限に引き出しています。

ChatGPTの利用方法


訓練されたモデルのパラメータを利用し、新しい入力に対して応答を生成します(推論)。 ChatGPTはステートレスなAPIのため、リクエスト以外の情報を持っていません。そのため、リクエストの度に、ユーザー側で腹持ちしているユーザーとChatGPTの全会話履歴を送信してあげる必要があります。
また、ファインチューニング機能によるモデルカスタマイズやWebブラウジング機能により回答に最新の情報を含ませることが可能です(GPT-3の学習データは2021年9月までのもの)。

画像生成AI OpenAIのDALL-E 3とGoogle CloudのImagenの比較を試みた

はじめに

OpenAIのChatGPTなど自然言語処理が引き続き流行ってますが、同じく生成系の画像生成AIもかなり注目を集めています。 多くのAIサービスが出ていますが、Open AIのDALL-E 3とGoogle CloudのImagenについて比較を試みてみました。

DALL-E 3

Microsoftは10月3日(現地時間)に、Open AIの画像生成AI「DALL-E 3」がBingのImage Creatorで無料で利用可能になったと発表した。 そこでいくつか画像生成を試してみました。

プロンプト&生成画像

500mm望遠レンズ ポートレート 冬 朝日 雪積もるロッジ 超高画質 フルサイズ 超細部まで描写 3/4ボディショット 20歳 美女 微笑み マフラー ニット帽 髪がなびく

全身最強装備 エイリアンとの戦い 美しい女性 日本人 18才 ショートカット アニメのヒロインっぽい グラマー 武器は日本刀 サーチアイ 写真のようなリアルなイラスト 近未来都市

巨大な可愛い顔のミーアキャットが1匹で攻めて来た 江戸時代の江戸の町はパニック 逃げ惑う 商人や農民やサムライ 男も女も子供も荷物を放り投げて一目散に逃げる様子

4コマ漫画 まず真面目そうなスーツ姿の貴史が会社に出社 次に机に座って仕事を開始 次にカバンの中からノートパソコンを出そうとする カバンの底が穴が空いてて中身が全部なくなっていたというオチ

ラーメンを頭の上に乗せている 左側ほっぺにナルト 可愛い 日本人 女性 20代 海辺 微笑み 目が大きい

世界一細かい迷路 細か過ぎて絶対に解けない スタートは右上 ゴールは左下 ゴールに辿り着ける道は1通り

スーツ姿で手に傘を持っている緑のカエルの顔をしたおっさん 大都会 渋谷 スクランブル交差点 真ん中 前の人が落としたハンカチを拾って届けようとしている

髪の毛がラーメンになっている 可愛い 日本人 20代 女性 海辺 微笑み ピラミッドが描かれた白いTシャツを着ている

イクラ風 かっこいい男 後ろ姿 滝の前 未来都市 空飛ぶ車 恐竜 ヒロインは遠くを見ている後ろ姿

Imagen

Google Cloud上で利用を試みましたが、制限付き一般提供の扱いで、Imagen機能を使用するためには、「テスタープログラムへの申請が必要」とのことでした。 残念ながらすぐに利用できませんでした。 申請して利用許可がされるのを待ちます。

https://cloud.google.com/vertex-ai/docs/generative-ai/image/overview

最後に

Google CloudのImagenは利用することが出来ませんでしたが、OpenAIのDALL-E 3を試すことが出来ました。 結果は見て頂いた通り、非常にレベルが高いものでした。 一方で生成AIの著作権侵害など、これまでになかった問題も出て来ています。 幅広に情報をキャッチしていくしかないですね。

ベクトル検索とは

はじめに

アプリケーション開発の現場でも、よく耳にするようになったベクトル検索について、簡潔に整理しました。

ベクトル検索とは?

ベクトル検索とは、コンテンツ(テキスト、画像、音声)をベクトルに変換(エンベディング(埋め込み))し、これらのベクトル間の類似度や距離を基に類似したベクトル(コンテンツ)を見つけることができる手法です。

従来のキーワード検索では対応できなかった、ユーザーの入力情報が曖昧な場合でも、検索エンジン側が目的や意図を理解して、ユーザーが求めるものを提供する概念(セマンティック検索)の手段の一つとして使用されています。

f:id:businessman7:20231015192254p:image

エンベディング(埋め込み)

エンベディング(埋め込み)とは、深層学習モデル(例えば、Word2VecやMobileNet(共にGoogle))を利用して、テキストや画像などのコンテンツをベクトル形式で表現することです。

類似したベクトルを見つける

ベクトル間の類似度や距離は、通常、コサイン類似度やユーグリッド距離で計測されます。

しかし、高次元のベクトル空間では、すべての検索対象ベクトルとの比較を行うと計算コストが非常に高くなります

この問題に対応するため、近似最近傍探索(ANN)のような手法が用いられることが多いです。ANNはインデックスを使用して近似的な結果を高速に取得するため、大量のデータを効率的に検索する際に有効ですが、完全な精度とはトレードオフの関係にあります。

さらに、次元の増加に伴ってベクトル間の比較計算コストが指数的に増大する「次元の呪い」という問題があります。この問題の緩和のため、次元削減手法(例えばPCA(主成分分析)やt-SNE)を活用することが推奨されることもあります。

キーワード検索

キーワード検索は、コンテンツに紐づけられたタグなどを基に、キーワードとの合致度、類似度をリレーショナルデータベースなどでマッチングすることで、関連するコンテンツを見つける従来の手法です。

セマンティック検索関連 パブクラサービス

  • Google Cloud
    • Vertex AI Matching Engine
    • Vertex AI Search
    • AlloyDB AI
  • Azure
    • Azure Cognitive Search
  • AWS