AI基本の超ざっくりまとめ


# 人工知能・AI(Artificial Intelligence)とは
人工知能とは、人工的にコンピュータ上などで人間と同様の知能を実現させようという試み、技術

# ざっくり歴史
1947年：A.M.Turingはロンドン数学学会の講義で，現在の人工知能の概念を提唱
1953年：AIという名称が生まれたダートマス会議
1957年：アメリカの心理学者フランク・ローゼンブラットが考案したのがパーセプトロン
1966年：初の対話型自然言語処理プログラムELIZA(イライザ)が誕生(人工無能)
1984年：常識をコンピュータに蓄積させて人工知能に推論を行わせるCYCプロジェクト
1986年：デビッド・ラメルハートらが多層パーセプトロンを使用したバックプロパゲーション（誤差逆伝播学習法）というアルゴリズムを考案
1990年：J.R.Kozaが遺伝的プログラミングを開始
1990年：データマイニング技術の誕生
1997年：チェスプログラムDeepBlueがチェスチャンピオンG.Kasparovに勝利
2006年：ジェフリー・ヒントンらが2006年にディープラーニングを発明
2010年〜2011年：ビッグデータ普及
2022年：ChatGPTが公開


# ANI･AGI･ASI
### ANI
何かに特化したAI
将棋や株価予測など
### AGI
様々な課題を幅広く解決する能力を持ったAIのこと
### ASI
人類の知能を超えたAI


# 機械学習
・機械学習とは、コンピューターに大量のデータを読み込ませ、データのパターンを学習させ、判断や予測を行う技術


# 学習するデータの有無での分類
### 教師あり学習
入力データと、正解となる教師データを用意し、機械学習モデルを作成する手法です。教師あり学習の例として「回帰」や「分類」などの機械学習が挙げられます。

### 教師なし学習
正解となるデータがない状態で機械学習モデルを作成する手法です。入力したデータ自体の中から法則性や類似性を見つけ出し、機械学習を行います。「クラスタリング」や「次元削減」、「主成分分析」、「ニューラルネットワークモデル」などが教師なし学習の例です。

### 強化学習
静的な学習データを用意せず、機械自体が行動した結果をもとに学習を行う手法です。予め報酬条件を設定し、報酬が最大になるような形で機械学習が行われます。ディープラーニングと呼ばれる手法との組み合わせが注目されていることも強化学習の特徴です。

# 予測モデル
### 予測モデルの代表的なアルゴリズム
モデルを作成するアルゴリズムは様々ある
・線形モデル
・決定木
・SVM/サポートベクターマシン
・ランダムフォレスト
・LightGBM/XGBoos
・ニューラルネットワーク・ディープラーニング
↓
これらのアルゴリズムにより、データセットの学習結果から新たな入力に対する数値を予測する「回帰」や、ラベルを予測する「分類」などの仕組みで機械学習してモデルを作成する


### 予測モデルの作成
#### データ準備
・1->2/2->4/3->6などx->y のような入出力のデータセットを教師データという
・例えばネットに転がってるデータを集めたり、業者から購入するなど
↓
#### 分析設計
ここでは目的変数と説明変数を設計します。まずは、将来の数値を導く「回帰」か、データを分類する「判別」か、また「予測」なのか、「要因分析」なのか、分析タイプを決定して、それに応じた目的変数を作成。さらに、どんなデータが影響しているのか仮説を立案し、説明変数（特徴量）を設計
↓
#### 分析実行・結果解釈
作成した説明変数をもとにいよいよ予測モデルを作成します（分析実行）。パラメータのチューニングなどにより精度を改善し、導かれた分析結果をもとに業務に適用できるかどうかを判断します（結果解釈）
↓
#### 作ったモデルを使う
・例えばChatGPTのようにAPIで問い合わせして回答を得たりする

#### 過学習
学習させすぎによって学習に使ったデータに対しては正解できるが、他のデータに対しては全然対応できないモデルができてしまう

### アンダーフィッティング
データ・モデルが入出力変数の関係を正確に取り込めず、トレーニング・セットと未知のデータの両方で高いエラー率を生成するデータサイエンスのシナリオ



# ニューラルネットワーク
ニューラルネットワークとは、人間の脳の神経細胞のネットワークに似た構造をコンピュータ上で実現し、様々なデータから自動的に特徴を学習する情報処理モデル

### 層
ニューラルネットワークは、入力を受け取るinput層、出力を行うoutput層、その間の任意の数の隠れ層(hidden)から構成される

### パーセプトロン
入力ベクトルXXと入力層と出力層の結合重みベクトルWWの内積を活性化関数に与える線形識別モデルの事

### 単純パーセプトロン
配列を入力に受け取り、0か1の数字を一つ返す、ニューラルネットワーク
複数の入力値に対し、、1つの出力を持つモデルのこと

### ニューラルネットワークの種類３選
#### ディープニューラルネットワーク（DNN）
脳の仕組みを模したニューラルネットワークを多層に重ねたもの

#### 畳み込みニューラルネットワーク（CNN）
画像認識処理でよく利用される深層学習モデルですが、自然言語処理にも利用され、成果を出しているモデルです。層間が全結合ではない順伝播型ニューラルネットワークをさします。
画像認識処理では、Facebook の写真の自動タギング、自然言語処理ではGoogle 翻訳のアップグレードでも話題になったニューラル機械翻訳が有名な例
 
#### 再帰型ニューラルネットワーク（RNN）
RNNは、時系列データを扱うことができるニューラルネットワークで
リカレントニューラルネット、フィードバックニューラルネットとも言われます。
文脈を考慮することのできるニューラルネットワークのモデルなので、機械翻訳や音声認識に使われます。近年翻訳の精度が劇的に向上したGoogle翻訳にも採用されています。


### ニューラルネットワーク発展の歴史
#### パーセプトロン
1957年にアメリカの心理学者フランク・ローゼンブラットが考案したのがパーセプトロン
パーセプトロンはパターン認識を行うことができ学習することが出来たことから一時的なブームを引き起こしますが、「線形分離可能な問題」しか対応する事ができないことを指摘されそのブームは終焉
↓
#### バックプロパゲーションの発表
1986年にはアメリカの認知心理学者のデビッド・ラメルハートらによる多層パーセプトロンを使用したバックプロパゲーション（誤差逆伝播学習法）というアルゴリズムが考案
これは「隠れ層」を加えた2層以上のパーセプトロンを使用することで「非線形分離可能な問題」を解くことができるようになったものの、同時にアルゴリズム調整が困難になってしまうという問題にバックプロパゲーションを使うことで多層構造でも重みの調整を可能にし、適切な学習ができるようになるというブレイクスルーでした。
↓
#### そしてディープラーニングへ、多層パーセプトロンの登場
形式ニューロンを発展させる形でパーセプトロンが登場し、限定的ですが学習が可能となり、その限界もパーセプトロンを多層にすることで学習できるようになりました


### 参考

#### ハイパーパラメータ
機械学習アルゴリズムで、人間が調整してやらなきゃいけないパラメータのことをハイパーパラメータという

#### 収束
進むにつれて一定の値 α に限りなく近づくとき，数列 an は α に「収束する」と言う

#### 最適化・オプティマイザー･Optimization
・関数などを最適な状態に近づけること

#### 最適化の種類一覧・数式が違う
・ただの勾配降下法(別名：バッチ勾配降下法)
・確率的勾配降下法(SGD)・・・これが最適化の基本・この弱点を埋めるため様々な方法が考えられた
・最急降下法
・Adam
・MomentumSGD
・AdaGrad
・AdaDelta
・RMSpropGraves
・NesterovAG


### 勾配法
・最適化問題において、関数の勾配に関する情報を解の探索に用いるアルゴリズムの総称
### 勾配法の種類・3種類
・ただの勾配降下法(別名：バッチ勾配降下法)
・確率的勾配降下法(SGD)
・ミニバッチ勾配降下法


# ディープラーニング

### ディープラーニングの機械学習やモデル作成の流れ
### 1. 課題の定義と目的の設定
・画像認識、音声認識、自然言語処理などどれにするか決める
・目的の設定: 例えば「画像認識モデルで99%の精度で犬と猫を区別する」など
↓
### 2. データの準備
・データ収集: 学習に必要なデータを収集・公開されているデータセットを利用したり、独自にデータ収集を行う・データの種類や量、質はモデルの性能に大きく影響する
・データ前処理: 収集したデータを学習に適した形式に変換する・ノイズを除去したり、欠損値を補完したり、データのスケーリングを行ったりする・データの前処理方法は、データの種類や学習タスクによって異なる
↓
### 3. モデルの構築
・ニューラルネットワークの設計: 学習タスクに適したニューラルネットワークのアーキテクチャを設計・畳み込みニューラルネットワーク、再帰型ニューラルネットワーク、Transformerなど、様々な種類のニューラルネットワークがある・ニューラルネットワークの層数、ニューロン数、活性化関数、損失関数などを決定する
・モデルのパラメータの初期化: ニューラルネットワークのパラメータを初期化する・ランダムな値で初期化したり、事前学習済みのモデルのパラメータを利用したりする
↓
### 4. モデルの学習
・フォワードプロパゲーション: 入力データを入力層から出力層まで伝搬させ、各層の出力値を計算する・この過程で、ニューラルネットワークのパラメータは固定されている
・損失関数の計算: 予測値と正解値の誤差を計算する・損失関数はモデルがどれだけ正確に学習できているかを評価する指標・代表的な損失関数として、交差エントロピー誤差、平均二乗誤差などがある
・バックプロパゲーション: 損失関数の勾配を計算し、各層のパラメータに対する影響度を伝搬させる・この過程で、モデルのパラメータが更新される
・最適化アルゴリズムの設定: モデルのパラメータを更新するための最適化アルゴリズムを設定する・確率的勾配降下法、Adam、RMSpropなど、様々な種類の最適化アルゴリズムがある・学習率、バッチサイズなどのハイパーパラメータを設定する
・モデルの訓練: 上記のフォワードプロパゲーション、損失関数の計算、バックプロパゲーションを繰り返し、モデルのパラメータを更新していく・各エポックでは、学習データを複数回処理し、モデルのパラメータを更新する・検証データを用いて、モデルの性能を評価し、必要に応じて学習を終了する
↓
### 5. モデルの評価
・テストデータを用いた評価: テストデータを用いて、モデルの最終的な性能を評価する・モデルの精度、再現率、F1スコアなどの指標を用いて評価する
・モデルの解釈: モデルがどのように予測を行っているのかを解釈する・各ニューロンの活性化度を分析したり、特徴量の重要度を計算したりする・モデルの解釈は、モデルの信頼性を向上させるために重要
↓
### 6. モデルの運用と改善
・モデルのデプロイ: 学習済みのモデルを本番環境にデプロイ・モデルをAPIとして公開したり、組み込みシステムに組み込んだりする
・モデルの監視: デプロイしたモデルの性能を監視・モデルの精度や信頼性を継続的に評価し、必要に応じてモデルを再学習させる
・モデルの改善: モデルの性能を向上させるために、モデルを改善していきます。データを増やしたり、モデルのアーキテクチャを変更したり、ハイパーパラメータを調整したりする




# LLM・大規模言語モデル
大規模言語モデル（Large Language Models/LLM）とは、大量のデータセットとディープラーニング技術を用いて構築された、機械学習の自然言語処理モデルのこと
・計算量：コンピュータが処理する仕事量
・データ量：入力された情報量
・パラメータ数：ディープラーニング技術に特有の係数の集合体

# 各モデル特徴
### Transformer
- Transformerは、2017年に発表された「Attention Is All You Need」という論文で示されたディープラーニングのモデル
- 主なLLMの多くは、「Transformer」と呼ばれるニューラルネットワークアーキテクチャをベースとしています

### GPT
- 0penAIから2018年に以下の論文で提案されたモデルで、基本的にはTransformerをベースに、事前学習-ファインチューニングをすることで非常に高い精度を達成したモデル

### GPT2
- GPT-2、GPT-3になるとファインチューニングは行わなくなる
- パラメータ数は最大15億
- 膨大な量のテキストデータでトレーニングされた
- テキストの生成能力が高い
- 質の高い継続的なテキストを生成可能
- しかし、バイアスや不適切な出力の問題がある

### GPT3
- パラメータ数は約1750億と大規模
- さらに多様で大量のデータでトレーニング
- 様々なタスクに転移可能な汎用的なモデル
- 指示に基づいてコード生成、作文、質問応答などが可能
- しかし、性能の一貫性や制御が課題

### GPT4
- パラメータ数などの詳細は公開されていない
- マルチモーダル入力(テキスト、画像など)に対応
- さらに高い言語理解・生成能力
- 様々な分野の知識を統合してより高度なタスクが可能
- 倫理的な問題にも配慮されている(と主張されている)

# LLM・大規模言語モデルの学習の仕組み
・大量のデータセットとディープラーニング技術を用いて機械学習させて自然言語処理モデルを構築する

### 巨大テキストデータセットを用いた事前学習（Pre-Training)
・教師あり学習や教師なし学習で、大量のテキストデータや画像データなどを学習させる
### 性能を最適化する微調整（Fine-Tuning）
・すでに学習済みのAIモデルを、新しいタスクやデータセットで微調整すること

# 作成されたLLMモデルの利用方法
・LLMが入力（プロンプト）を受け取る
↓
・トークン化：入力文をトークン（最小単位）に分別し、ベクターに変換
↓
・文脈理解：プロンプト内の各トークンとの関連性を計算
↓
・エンコード：特徴量の抽出
↓
・トークンのデコード：次のトークンを予測
↓
・入力文の次のトークンの確率を出力
↓
・上記の手順を繰り返し、文書生成が実行
↓
・呼び出し元に返す



### ハルシネーション（Hallucination）
・AIがもっともらしい嘘をつくこと

# AGI
AGIとは、サム・アルトマン氏の「汎用人工知能（AGI）についての展望」というロードマップによると、「人間よりも賢いAI」と定義(2023年2月24日)

### AGIの開発方法
・現在確立されている方法はないが、研究がなされている
・イーロンマスクによると約3年以内に実現可能とらしいです
・深層学習をベースとするニューラルネットワークの発展が、AGIの基盤技術となる可能性があります


# その他

#### AIに必要な数学知識
[AIの数学の基本中の基本](https://qiita.com/RollTall/items/56db9c694615995367de)

#### データマイニング
・データマイニングはデータの中から法則性を推定する技術
・データマイニングとは、統計学、パターン認識、人工知能等のデータ解析の技法を大量のデータに網羅的に適用することで知識を取り出す技術のこと


#### 人工無能
・会話/回答プログラム
・いろんな型があるが例えば会話型は会話の質問と回答セットを用意しておき、パターンマッチングのルールによって回答を行う仕組み
・人工知脳との違いは人工無能は学習できないという点

# 引用
https://www.ai-gakkai.or.jp/whatsai/AIhistory.html

https://jpn.nec.com/solution/dotdata/tips/predictive-models/index.html

https://www.imagazine.co.jp/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%80%80%EF%BD%9E%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97/

https://nihemak.hatenablog.com/entry/2016/07/02/205330