業務効率化にむけAIの基礎知識をまとめました

# はじめに
みなさんは通常業務でAIを使っていますか？
私は業務の中で生成AIを使うことが増え、仕事を奪われる危機感すら感じることがあります。近い将来、システムのインプット・アウトプットを人間が管理し、他をAIに任せるなんて時代が来るかもしれません。

そんなAI主導の時代で生き残るためには、AIに関する知識をつける必要があると感じています。この記事では、業務効率化に向け、AIの概念をまとめます。

# 基礎概念

## AIとは

AIとは人工知能（Artificial Intelligence）の略称で、機械であるコンピューターが「学ぶ」ことができる技術です。

source: https://www.mext.go.jp/kids/find/kagaku/mext_0008.html

## 機械学習・深層学習とは

端的に説明すると、AIの中に機械学習があり、その中に深層学習があるという入れ子構造になっています。

機械学習は、AIの中でも明示的にプログラムしなくとも、データからパターンを学習して判断する手法です。

深層学習とは、機械学習の中でも人間の脳の構造を模したニューラルネットワークを使って学習を行う技術です。

> ML は、特にプログラミングしなくても機械が学習できるようにする AI の応用例です。ML はディシジョン ツリーや線形回帰などの単純な方法でデータから知識を抽出する手段として使用されるのに対し、ディープ ラーニングは人工ニューラル ネットワークに見られるより高度な方法を使用します。

> ディープ ラーニングでは、データセットの特徴が自動的に抽出されるため、人間の介入が少なくて済みます。一方、より単純な ML 手法では、多くの場合エンジニアがデータの特徴と分類子を手動で特定し、それに応じてアルゴリズムを調整する必要があります。基本的に、ディープ ラーニングは自身のエラーから学習できるのに対し、ML は人間の介入を必要とします。

source: https://cloud.google.com/discover/deep-learning-vs-machine-learning?hl=ja

## 生成AIとは

生成AIとは、膨大なデータから学習したパターンや関係性を元に、文章や画像、動画、音声、さらにはコードなどのコンテンツを新たに生成するAIの総称です。

source: https://www.ibm.com/think/topics/generative-ai

## 基盤モデルとは

基盤モデルは、多様なタスクを実行するように訓練された機械学習モデルの一種です。AIをゼロから開発するのではなく、新しいアプリケーションを効率よく作成するための「基盤」となるモデルです。

source:
– https://www.redhat.com/ja/topics/ai/what-are-foundation-models
– https://aws.amazon.com/jp/what-is/foundation-models/

## 大規模言語モデルとは

大規模言語モデルは、要約、テキスト生成、分類、自由形式の会話、情報抽出などの言語ベースのタスクに特に重点を置く基盤モデルの一種です。OpenAIのGPTモデルなどが該当します。

source: https://aws.amazon.com/jp/what-is/generative-ai/

# 大規模言語モデルに関する基礎概念

## トークン (Token)

トークンは、テキストを分解するときに大規模言語モデルによって生成される単語、文字セット、または単語と句読点の組み合わせです。

例えば、`I heard a dog bark loudly at a cat`という文章は、次のようにトークン化されます。

`[I, heard, a, dog, bark, loudly, at, a, cat]`

大規模言語モデルは、確率分布に基づき次なるトークンを推論して文章を生成します。

source: 
– https://learn.microsoft.com/ja-jp/dotnet/ai/conceptual/understanding-tokens
– https://www.ibm.com/think/topics/llm-temperature

## Context Window

Context Window（またはContext Length）は、大規模言語モデルが一度に「覚えていられる」トークンのサイズです。人間の短期記憶に近い役割をしています。

source: https://www.ibm.com/think/topics/context-window

## 幻覚（Hallucination）

幻覚とは、大規模言語モデルが、実に基づかない内容や、理解のできない内容を生成する現象です。

一般的に、大規模言語モデルのContext Windowを大きくすると、正確性が増し幻覚を抑えることができるとされています。

source: 
– https://www.ibm.com/think/topics/ai-hallucinations
– https://www.ibm.com/think/topics/context-window

## Temperature

大規模言語モデルのアウトプットのランダム性を調整するためのパラメーターです。この数値が高い場合、大規模言語モデルはより次に来る確率の低いトークンを生成する確率が高くなります。Temperatureが低い場合は、より確実性の高いトークンを生成する確率が高くなります。

source: https://www.ibm.com/think/topics/llm-temperature

# 大規模言語モデルに関する技術

## Prompt Engineering

プロンプロエンジニアリングは、大規模言語モデルから望ましい出力を得るためにプロンプト(指示)を設計、最適化するための技術です。

### N shot Prompting

Zero-shotは、大規模言語モデルにコンテクストや例を与えずに、直接的な指示を用いて生成を行う手法です。
一方で、One-shot、Multi-shot promptingは、希望するインプットやアウトプットの例を示し生成を行う方法です。

### Chain of Thought Prompt

大規模言語モデルに対して、複雑な推論タスクを簡単なステップに分割し、アウトプットを向上させる手法です。

source: https://cloud.google.com/discover/what-is-prompt-engineering?hl=ja

## Function Calling

Function Callingは、大規模言語モデルにコードを実行させる手法です。ユーザーは関数の定義とメッセージを合わせて大規模言語モデルに投げかけ、大規模言語モデルが状況に応じて適切な関数を呼び出すリクエストを行います。

![Function Callingの流れ](https://cdn.openai.com/API/docs/images/function-calling-diagram-steps.png)

source: https://platform.openai.com/docs/guides/function-calling?api-mode=responses

## 検索拡張生成(RAG)

検索拡張生成は、大規模言語モデルのトレーニングデータ以外の知識を参照することにより出力を最適化するプロセスです。

大規模言語モデルを再トレーニングすることなく、アウトプットを改善することができる費用対効果の高いアプローチです。

source: https://aws.amazon.com/what-is/retrieval-augmented-generation/

## Fine-Tuning

大規模言語モデルのパターン認識能力を用いて、比較的少量のデータから特定のタスクを学習する方法です。

source: https://developers.google.com/machine-learning/crash-course/llm/tuning?hl=ja#fine-tuning

## Human-in-the-loop (HITL)

AIの分野においてHITLとは、AIシステムの中に人間のインプットや専門性を介在させ、人間が補う形でシステムを成り立たせる考え方です。

source:
– https://atmarkit.itmedia.co.jp/ait/articles/2203/10/news019.html

# まとめ

いかがでしたでしょうか。この記事では主に大規模言語モデルについて、使用される技術をまとめてみました。非常に進歩の早い分野なので、引き続き情報整理をしていきたいです。