Private AIに関する基礎知識

こちらは、[TUNA-JPアドベントカレンダー 2023](https://qiita.com/advent-calendar/2023/tuna-jp) の1日目の記事です。

大層なタイトルを付けましたが、単に私がちゃんと理解したいと思った内容をまとめた記事となります。知りたいと思ったきっかけは、今年の `VMware Explore 2023` で、**Private AI** にフォーカスした発表が多かったからです。（[参考](https://blogs.vmware.com/vmware-japan/2023/11/vmware-private-ai.html))

(※. 注意) 私も最近勉強を始めたばかりなので、勘違いなどにより、この記事のどこかが `間違っている` 可能性もゼロではありません。もし間違いを見つけたら、 `優しく` ご指摘下さいませ :relaxed:

# この記事の概要・対象読者
今年になって、`ChatGPT` が空前のブレークスルーを起こし、様々なニュースに取り上げられたので、ChatGPTとか、`生成AI(Generative AI)` はなんとなく知っている状況かと思います。

そういった方々を対象に、
- 生成AIは、どういう仕組みになっているのか？
- それに対して、 `Private AI` は何なのか？ 

を中心に、調べた結果をまとめました。




# AI 周りの基礎知識

## そもそもAIってなんだっけ？
**AI（人工知能）** とは、コンピュータが `人間の知能の一部の機能を模倣` する技術です。人間のやることを機械に肩代わりさせたい訳ですね。今までは、AIを使って、以下のようなことが行われてきました。

- **スマートアシスタント** : Siri（Apple）、Alexa（Amazon）、Google Assistantなど、声による命令を元に、タスクを実行。
- **レコメンド** : Amazon、楽天などのオススメ商品や、NetflixやYouTubeなど過去の視聴履歴に基づいたコンテンツの推奨などの機能。
- **自動運転車** : 道路状況を認識し、ナビゲーションをしたり、最近では自動運転技術にも使われます。
- **医療分野** : 画像診断（X線、MRI）で病変を検出したり、病気の診断を支援
- **チャットボット** : カスタマーセンターとして、ユーザの質問に自動的に応答
- **金融取引** : 株式市場で、高頻度取引やリスク管理を自動で行う。
- **品質管理** : AIが製品の品質を検査し、欠陥を自動的に識別する。
- **言語翻訳** : Google 翻訳など、異なる言語間での即時翻訳を提供する。
- **教育** : 生徒の学習スタイルや進捗に合わせて、教材をカスタマイズ
- **スマートホーム** : 家庭内の照明、温度、セキュリティなどを自動制御

これらの共通点は、**決められた行為の自動化** であり、`Inputが予め想定した範囲内で機能するプログラム`であるということです。

例えば、明日の天気を知りたくて、Google翻訳に尋ねても、回答は `What is tomorrow's weather?` となってしまいます。使い方さえ間違えなければ、これはこれで便利ではあります。

## 生成AI (Generative AI) になって、どうなった？

まず生成AIの定義は、`学習済みのデータを活用して、新しいコンテンツを生成するAI` となります。もう少し分解して説明すると、以下のような感じになります。
1. プロンプトによって**入力されたデータ**を元に、
2. 事前に準備している**トレーニングデータ**との `規則性や構造` を比較・演算し、
3. `同様の特性` を持つ**コンテンツ**（テキスト、画像、または他のメディア）を回答します。

で、通常のAIとの大きな違いは、ずばり **汎用性** です。

普通のAIの代表例は、**ドラクエの村人A**です。あなたの意図に関わらず、何度話しかけても、`ここはラダトームの城下町です。`としか、答えてくれません。

これが生成AIになり、**村人Aと流暢な会話**ができるようになりました！こちらの `問いかけ方(Input)` が自由になり、村人の `答え方が無限` になった訳ですね。

これは、本当に凄いことだと思います。

## 生成AI基盤の仕組み

生成AI基盤では、事前に以下の3ステップを行っています：

1. **データ収集** : 情報源として、`膨大なテキストデータ`を入力します。
2. **前処理** : テキストデータに対して、不要な文字の除去、文の標準化、トークン化などを行い、トレーニングに適した形式に変換します。
   - **トークン化** : テキストデータを**トークン**と呼ばれる小さな単位（単語、句、文など）に分割することで、処理しやすくすることです。（※. 各トークンは順序を保持し、文脈が維持されるようにモデルに供給されます。これにより、モデルは各トークンの意味だけでなく、文全体の文脈を学習できます。）
     - 入力例 : "The cat sat on the mat."
     - 出力例 : 「The」、「cat」、「sat」、「on」、「the」、「mat」、「.」(7トークン)
3. **モデルのトレーニング** : これが最近よく聞く、**GPT**（Generative Pre-trained Transformer）です。GPTとは、**ニューラルネットワーク**（AI分野で、データからパターンを学習する仕組み）のパターンの１つであり、**Transformer**（自然言語処理に特化したアーキテクチャ）を活用しているのが特徴です。何を言っているか分からないと思うので、先ほどの"The cat sat on the mat."をインプットとした時の、実際のトレーニングの様子を見てみましょう。
   1. **教師なし学習**（Unsupervised Learning） : 大量のテキストデータから、一般的な言語パターン、文構造、単語の関係性を学習します。この時点では、文の深い意味や文脈に関しては分からない状態です。
        - **結果例**: 「cat」という単語や、「on the」というフレーズがよく使われることを学習します。
   2. **Transformer**による自己注意機構 (Self-Attention) : 文全体の文脈を考慮することで、単語間の関係性がより明確になります。
      - **結果例** : 「sat」が「cat」に関連していることや、「mat」が物理的な位置を示していることを理解します。
   3. **教師あり学習**(Supervised Learning) : これは必須ではないのですが、場合によっては、特定タスク（例：文章の要約、キーワード抽出など）の関連情報に焦点を当て、モデルを微調整します。
      - **結果例** : タスクが「キーワードを抽出」の場合、「cat」と「mat」が重要な単語として特定される、など。

ご参考までに、ChatGPTでは、インターネットから得られるテキストデータ（書籍、ウェブサイト、ニュース記事）として、**数十億個**の単語を含むデータセットでトレーニングされているそうです。

また、最近は`ChatGPT4-Turbo`が発表され、扱えるトークン数が、3.2万から**12.8万**トークンに増えた！という発表がありましね。これにより、処理可能な文章の長さがかなり増えました。

## 生成AIの処理内容
それでは、ここまでで準備したトレーニングモデルは、どうやって使うのでしょうか？
ここでは、「`最も有名な日本の富士山について教えてください。`」と入力があった場合の例を紹介します。

1. **文脈の理解** : 入力された文脈を理解して、`既存の知識(トレーニングデータ)` に基づき、関連情報を思い出します。
   - **結果例** : モデルは、`富士山` が関連していると判断。
2. **トレーニングデータの活用** : 関連する情報を生成するためにトレーニング中に学んだ知識を利用します。
   - **結果例** : `富士山が日本で最も高い山であること`、`美しい形で有名であること`、`文化的に重要な象徴であること` などの情報を引き出す。
3. **応答の生成** : モデルは、**確率的手法**を用いて続く言葉を予測し、一連の応答を生成します。
   - **結果例** : 「`富士山は、日本の中部に位置する成層火山で、日本で最も高い山です。その美しい円錐形の形状と雪を頂いた姿から、多くの芸術作品に描かれています。また、富士山は日本文化においても重要な位置を占めており、世界遺産にも登録されています。`」

あくまでもサンプルなので、実際の結果は異なることをご了承下さい。

## 生成AIの欠点
**もう、ChatGPTで良くない？** と、思っちゃいますが、現時点で、下記のようないくつかの欠点や課題があります。

1. データの品質と偏り:
   - 生成AIは、トレーニングデータに大きく依存します。元々持っていない情報を元に回答することはできません。利用する生成AIによって、`xxxの分野に強いAI` といった差異がでてきます。特にChatGPTに言及すると、ある時点のインターネットの情報を元にするため、`情報が古い`場合があります。
2. 倫理的な問題:
   - 生成AIを使用して、実在しない人物の画像や偽のニュース記事を生成することが可能です。これにより、ディープフェイクなどの誤情報の拡散や、プライバシーの侵害などの倫理的な問題が生じます。
   - AIによって生成されたコンテンツの著作権は、複雑な法的問題を引き起こします。また、既存の作品をトレーニングデータとして使用する場合、知的財産権の侵害の問題が生じる可能性があります。
3. 品質と制御の問題:
   - 生成AIが高品質の結果を保証するわけではありません。不適切な出力や、意図しない結果を生み出すことがあり、その品質を制御するのは困難です。
   - 利用者側の観点として、その潜在能力と限界を理解せずに使用すると、誤解や誤用が生じます。特に、非専門家がこれらのツールを使用する場合、不正確な結果や誤った解釈を生むリスクがあります。

特に**企業**において生成AIを採用する場合は、注意が必要です。

生成型AIの技術的な改善、倫理的なガイドラインの策定、および法的・規制的な枠組みの構築を通じて、部分的には対処可能ですが、インターネット上にある生成AIを使う限り、根本的な対処は難しいでしょう。

そこで登場するのが、**Private AI**です。


# Private AIの基礎知識
簡単に言うと、自社に `自前の生成AI` を持って、汎用モデルや `自社の特定データをトレーニング` させることで、`自社のガイドラインに準拠した仕様` にすることが、目的となってくるかなと思います。

## 特徴
主に**セキュリティ面**が重要になってきます。

1. **自社に特化したデータの利用** 
    - トレーニングデータの対象を、自社内でのみ閲覧可能なデータにすることで、自社情報に特化した生成AIとして利用できます。
2. **データ保護**
    - まず、プライベート環境に置くこと自体が、外部漏洩のリスクを低減します。また、データを分析時に、個人情報を匿名化またはマスクするよう工夫することで、プライバシーを保護することもできます。
3. **規制遵守** 
    - データ保護規制（例えば、EUのGDPRやカリフォルニア州のCCPAなど）に遵守するためには、Private AIが有効なケースがあります。
4. **最小限のデータ使用**
    - 必要最小限のデータのみを使用して分析を行うことで、プライバシーリスクを最小限に抑えます。

## 想定ユースケース
使い方は、ChatGPTとか一般的なAIのチャットボットに近いですが、Private AIにすることで、**自社データ**に基づいた `賢い回答` が期待されます。例えば、以下のようなケースです。

- 医療分野での患者データの分析
- 金融サービスでの取引データのセキュアな処理
- 企業の従業員データの管理
- 企業内FAQ

## VMwareの生成AIへの取り組み
2023年8月22日に開催された、「**VMware Explore 2023 Las Vegas**」において、企業での生成AIの導入を促進させ、信頼性の高いデータを基にした価値創出を支援する**VMware Private AI**を新たに発表しました。

現在、以下の2つの成果を発表しています。

- **VMware Private AI Foundation with NVIDIA**
    - VMwareとNVIDIAの戦略的パートナーシップを拡大し、VMwareのクラウドインフラを利用する企業が生成AIの次の時代に備えられるようにしました。
- **VMware Private AI Reference Architecture for Open Source**
    - 現在および将来にわたり最高水準のオープンソースソフトウェア（OSS）のテクノロジーをサポートし、企業がAIで求める成果の実現を支援します。


発表に関する記事は、[こちら](https://news.vmware.com/jp/releases/20230824_explore_ai_jp) を御覧下さい。

# おわりに
本当はこの後、Private AIの仕組みとして、`Hugging Face` の話とかを書きたかったのですが、既にかなり長くなっってしまったので、残りは後日書きます。。


最初、タイトルを「Private AIに関するOSSの基礎知識」としてましたが、力尽きてOSSの話まで辿り着かなかったので、タイトルを変えました・・。
ツナのアドベントカレンダーなので、別の日にOSSの話をできればやりたいなと思います。

# おまけ
記事の内容をChatGPTにレビューして貰いましたｗ この記事の要約としても使えるなと思いました。
![スクリーンショット 2023-11-30 23.11.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18601/6702fce2-2db8-99e3-39d7-38db96d2c4d2.png)