ファインチューニングを実施してみた

# はじめに
近年、大規模言語モデルの臨床現場や医療現場への適用に対する期待が高まっています。しかし、実際に現場の課題に適用しようとすると、大規模言語モデルが専門性の高い医療用語を十分に理解できず、理想的な価値を生み出すのが難しいという課題があります。

そんな中、以下の論文「大規模言語モデルに臨床知識をファインチューニングし、医療従事者レベルで臨床知識をエンコードさせる」という内容に触れたことをきっかけに、私も大規模言語モデルのファインチューニングを試してみたいと考えました。
[Towards Expert-Level Medical Question Answering with Large Language Models](URL "https://arxiv.org/abs/2305.09617")

この論文では、ファインチューニングに加え、「Chain-of-Thought (CoT) プロンプティング」や「Self-Consistency (SC) プロンプティング」といったプロンプト技術を組み合わせる方法も記載されています。しかし、今回の検証では、ファインチューニングに焦点を当てて実施していきます。

# 検証概要
今回の検証では、Amazon Bedrockの微調整ジョブを利用して、大規模言語モデルのファインチューニングを実施します。ただし、ファインチューニングには費用がかかるため、データ量を絞って行います。

その後、医療専門用語が含まれる質問をいくつか設定し、ファインチューニング前後で出力内容にどのような変化があるかを確認します。

# 対象データ
今回の検証で使用するデータは、PubMedQAです。PubMedQAは、生物医学分野の専門知識を問う質問応答データセットであり、AIモデルの性能評価や、医療AIの開発に広く利用されています。

このデータセットは、深層学習モデルが専門的なテキストを理解し、複雑な質問に対して正確な回答を生成できるかを評価するための重要なベンチマークとなっています。

データセットは以下で公開されています。
[Pub Med QA](URL"https://pubmedqa.github.io/index.html")

# 検証内容
### データの前処理
PubMedQAのデータセットは、以下の構成でJSON形式のデータとして提供されています。
```json:Original.data
{
"21645374": {
"QUESTION": "XXX?",
"CONTEXTS": [
"XXX."
 ],
"LABELS": [
"XXX"
],
"MESHES": [
"XXX"
 ],
"YEAR": "xxx",
"reasoning_required_pred": "xxx",
"reasoning_free_pred": "xxx",
"final_decision": "xxx",
"LONG_ANSWER": "xxx."
 },
 ```
このデータセットを、Claudeが採用している構成に従い、JSONL形式に変換します。
```jsonl:Processing.data
{"messages": [{"role": "user", "content": "ユーザーの入力"}, {"role": "assistant", "content": "アシスタントの応答"}]}
{"messages": [{"role": "user", "content": "別のユーザー入力"}, {"role": "assistant", "content": "対応する応答"}]}
```
### ファインチューニングの実施
#### S3バケットへの学習用データの配置
S3バケットを作成し、先ほど準備した学習用データをアップロードします。
![スクリーンショット 2024-12-11 12.00.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942647/2603235c-1316-85fd-7b7a-bcd32cb7bdb6.png)
#### Bedrockの微調整ジョブの作成
今回は、Claude 3 Haikuを使用します。ひとまず、ハイパーパラメータの値はデフォルトとして、先ほどS3バケットに配置したデータを入力データとし、微調整ジョブを作成します。
![スクリーンショット 2024-12-13 16.32.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942647/b5a1aa5e-0e97-869d-cd8e-6a942cd3dbcd.png)
![スクリーンショット 2024-12-13 16.35.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942647/9f3e4cee-c68c-b94c-1ce0-511eced412cd.png)

### カスタムモデルのデプロイ
ファインチューニングしたモデルをデプロイするために、プロビジョンスループットを購入します。今回の検証では、1時間以下の利用になるので、「No commitment」で購入します。
![スクリーンショット 2024-12-14 13.16.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942647/fae8d0c1-79b5-0bd0-c6f9-427352da0432.png)
ステータスが「稼働中」になったことを確認し、プレイグラウンドでカスタムモデルを選択し、評価を実施します。
![スクリーンショット 2024-12-14 13.30.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942647/d2a076f7-7c50-8108-0f7d-66e368d8e46d.png)


### 評価の実施
今回ファインチューニング結果を適切に評価すべく、定性評価と定量評価の二種類で実施します。
#### 定性評価
##### 各出力の比較結果
ファインチューニング前後で３つの質問の回答を比較し、その結果を整理します。

Q1. What is mitochondria?
>**Base model**
>>Mitochondria are organelles found within the cells of most eukaryotic organisms, including plants, animals, and fungi. They are often referred to as the "powerhouses" of the cell because they are responsible for generating the majority of the cell's supply of adenosine triphosphate (ATP), the primary energy currency of the cell.
>>
>>The key facts about mitochondria are:
>>
>>1. Structure: Mitochondria have a double membrane structure, with an outer membrane and an inner membrane that is highly folded into cristae. This large surface area allows for more efficient ATP production.
>>
>>2. Function: Mitochondria are the site of cellular respiration, the process that converts the chemical energy stored in nutrients, such as glucose, into ATP through a series of biochemical reactions.
>>
>>3. DNA: Mitochondria have their own circular DNA, which is separate from the DNA in the cell nucleus. This mitochondrial DNA (mtDNA) encodes some of the proteins involved in the mitochondrial respiratory chain.
>>
>>4. Origin: Mitochondria are believed to have originated from a symbiotic relationship between an ancient prokaryotic organism and a primitive eukaryotic cell, known as the endosymbiotic theory.
>>
>>5. Number: The number of mitochondria in a cell can vary widely, depending on the cell's energy requirements. Cells with higher energy demands, such as muscle cells and nerve cells, typically have a higher number of mitochondria.
>>
>>Mitochondria are essential organelles that play a crucial role in the overall metabolism and energy production of the cell, making them vital for the proper functioning of living organisms.
>
>**Fine tuning model**
>>Mitochondria are organelles found in the cells of most eukaryotic organisms, including plants, animals, and fungi. They are often referred to as the "powerhouses" of the cell because they are responsible for the production of the majority of the cell's energy in the form of adenosine triphosphate (ATP) through the process of oxidative phosphorylation.
>>
>>Some key facts about mitochondria:
>>
>>1. Structure: Mitochondria have a unique double-membrane structure, with an outer membrane and an inner membrane. The inner membrane is highly folded, forming cristae, which increase the surface area for the metabolic processes that occur within the mitochondria.
>>
>>2. DNA: Mitochondria have their own circular DNA, which is separate from the DNA in the nucleus of the cell. This mitochondrial DNA (mtDNA) is thought to have originated from a bacterial ancestor that was engulfed by a primitive eukaryotic cell during evolution.
>>
>>3. Function: The primary function of mitochondria is to generate ATP through the process of oxidative phosphorylation, which involves a series of enzymatic reactions that convert the energy stored in organic molecules (such as glucose) into ATP, the universal energy currency of the cell.
>>
>>4. Other functions: In addition to ATP production, mitochondria also play important roles in other cellular processes, such as calcium homeostasis, ap

**Base modelでは、ATP生産に関するプロセスを「細胞呼吸」と広義的に説明しているのに対し、Fine tuning modelは、ミトコンドリアに関する説明がより詳細になっています。具体的には、ミトコンドリア内膜や細菌の膜でATP（アデノシン三リン酸）を生成するプロセスである「酸化的リン酸化」にまで言及しています。**

**さらに、ミトコンドリアの「その他の機能」（カルシウムホメオスタシスやアポトーシス）も明記されており、Base modelに比べて補足的な情報が追加されています。**

Q2. What is steatohepatitis?
>**Base model**
>>Steatohepatitis is a type of liver disease characterized by inflammation and accumulation of fat within the liver cells, known as hepatic steatosis.
>>
>>The key features of steatohepatitis are:
>>
>>1. Steatosis: The presence of abnormal fat deposits, primarily triglycerides, within the liver cells.
>>
>>2. Inflammation: There is inflammation of the liver, with the infiltration of inflammatory cells, such as lymphocytes and macrophages.
>>
>>3. Hepatocyte injury: The fat accumulation and inflammation can lead to damage and death of liver cells (hepatocytes).
>>
>>There are two main types of steatohepatitis:
>>
>>1. Non-alcoholic steatohepatitis (NASH):
>>   - This type of steatohepatitis is not caused by excessive alcohol consumption.
>>   - It is often associated with conditions like obesity, type 2 diabetes, metabolic syndrome, and insulin resistance.
>>   - NASH is considered a progressive form of non-alcoholic fatty liver disease (NAFLD).
>>
>>2. Alcoholic steatohepatitis (ASH):
>>   - This type of steatohepatitis is caused by excessive and chronic alcohol consumption.
>>   - Alcohol can directly cause fat accumulation and inflammation in the liver.
>>
>>Both NASH and ASH can lead to further liver damage, including fibrosis, cirrhosis, and an increased risk of liver cancer if left untreated.
>>
>>The diagnosis of steatohepatitis typically involves a combination of blood tests, imaging studies, and sometimes liver biopsy. Treatment may include lifestyle modifications, such as weight loss, dietary changes, and reduced alcohol intake, as well as medications to manage associated conditions like diabetes and obesity.
>
>**Fine tuning model**
>>Steatohepatitis is a type of liver disease characterized by inflammation and accumulation of fat within the liver cells (hepatocytes).
>>
>>There are two main types of steatohepatitis:
>>
>>1. Non-alcoholic steatohepatitis (NASH):
>>   - NASH is a form of non-alcoholic fatty liver disease (NAFLD) where there is liver >>inflammation and damage in addition to the accumulation of fat in the liver.
>>   - NASH is often associated with obesity, insulin resistance, type 2 diabetes, and metabolic syndrome.
>>
>>2. Alcoholic steatohepatitis (ASH):
>>   - ASH is a form of alcoholic liver disease where there is inflammation and fat accumulation in the liver due to excessive alcohol consumption.
>>
>>The key features of steatohepatitis include:
>>
>>- Fatty liver (steatosis) - Accumulation of fat, especially triglycerides, within liver cells.
>>- Inflammation - Presence of inflammatory cells, such as lymphocytes and neutrophils, within the liver.
>>- Hepatocyte injury - Damage and death of liver cells.
>>- Fibrosis - Scarring and thickening of the liver tissue over time.
>>
>>Untreated steatohepatitis can progress to more advanced liver diseases, such as cirrhosis and liver

**Base modelでは、脂肪性肝炎の特徴や分類が明確に整理されており、診断や治療に関する具体的な情報も最後に記載されているため、包括的な視点を提供しています。**

**一方、Fine tuning modelでは、「線維化」という進行性の症状が新たに追加され、疾患の進行に関する説明が詳しく記載されています。しかし、診断や治療に関する情報は含まれておらず、提供される情報がやや限定的です。**

Q3. What recent discoveries have you made regarding colorectal cancer with liver metastases?
>**Base model**
>>I do not actually make any new discoveries regarding colorectal cancer with liver metastases. As an AI assistant, I do not conduct original medical research or make my own scientific discoveries. I only have access to the information that has been provided to me during my training.
>>
>>My role is to provide helpful information to you based on existing scientific knowledge and published research from reliable sources. I do not have the capability to independently investigate diseases, conduct experiments, or make novel findings about colorectal cancer and liver metastases.
>>
>>If you are interested in the latest discoveries and advancements in this area of oncology, I would suggest consulting with medical professionals, reviewing recent scientific literature, or checking authoritative sources like medical journals and cancer research organizations. They would be better equipped to inform you about any new insights or developments in the understanding and treatment of colorectal cancer that has spread to the liver. I cannot provide any exclusive or unpublished information on this topic.
>
>**Fine tuning model**
>>I do not actually make any discoveries or conduct medical research. I am an AI assistant created by Anthropic to be helpful, harmless, and honest. I do not have the capability to make independent scientific discoveries or advancements in the understanding of colorectal cancer with liver metastases. I can only provide information based on the data I have been trained on, which comes from existing published research and medical literature. I do not have access to any unpublished or novel findings about this topic. My role is to provide helpful information to you, not to claim any original discoveries of my own. I apologize that I cannot give you a more substantive answer about recent breakthroughs in this area of oncology research.

**どちらのモデルも回答を生成することはできませんでした。Fine tuning modelの学習データセットには、回答の根拠となり得る情報が含まれていたため、回答を期待していたのですが、少し残念です。**

#### 定量評価
ファインチューニング前後の混同行列を用いて、モデルの予測がどのように変化したのかを検討しました。その結果、ファインチューニング後にはMaybeの予測割合が増加し、モデルがより慎重になったと考えられます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942647/95bded57-d9aa-4600-bf99-bb32cfa35ba1.png)

ファインチューニングによって、Maybeクラスの識別性能が向上した一方で、Noクラスの識別性能が低下する結果となりました。全体的な正解率は若干向上したことが確認できました。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942647/ad2144d8-0af8-455d-8de2-2bca9b25f13b.png)

## まとめ
今回の検証では、Amazon Bedrockを用いて、医療用語のQAセットに対するファインチューニングを実施しました。学習データセットの規模が非常に小さいため、出力に大きな差が生じないのではないかと懸念していましたが、この検証を通じて、**「大規模言語モデルに臨床知識をファインチューニングし、医療従事者レベルで臨床知識をエンコードさせる」 可能性を確認することができました。**

ただし、この検証内容を実際の現場に実装する際には、現場の課題が何であるのか、またどのような価値を提供すべきかをあらためて明確にする必要があります。それに加え、学習データの収集や学習にかかるコストを十分に考慮した上で、最適な実装方法を決定すべきだと感じました。

今後は、回答の信頼性や時効性が求められる質問への対応策として、RAGの検討を行うほか、「Chain-of-Thought (CoT) プロンプティング」や「Self-Consistency（SC）プロンプティング」などのプロンプトテクニックとの組み合わせにも挑戦していきたいです。