{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "6d42bb11",
   "metadata": {},
   "source": [
    "# 第 15 章　注意力機制與 Transformer — 實作 Notebook\n",
    "\n",
    "「醫學生的機器學習入門」第 15 章配套程式。建議在 **Google Colab** 執行（選單「執行階段 → 全部執行」，CPU 即可，不需要 GPU）；本機 Jupyter 也可以。\n",
    "\n",
    "- 第 1–2 節：讀資料、用 TF-IDF + 邏輯迴歸做基準，只需要 Colab 預裝的 scikit-learn。\n",
    "- 第 3–7 節：用 **Keras 3** 自己組一個迷你 Transformer 編碼器，並把注意力權重畫出來。**沒有安裝 Keras 的環境會自動跳過這幾節**，不會報錯。\n",
    "\n",
    "資料集：Gretel `symptom_to_diagnosis`（Apache-2.0）。依資料集說明，它改編自 Kaggle 的 Symptom2Disease，並用大型語言模型把症狀改寫成「病人口吻」——**不是真實病人的病歷**，22 個診斷也是刻意均衡的教學設定，和真實門診的盛行率無關。結果僅供學習，不構成臨床建議。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "df64a4e7",
   "metadata": {},
   "source": [
    "## 0. 環境檢查\n",
    "印出套件版本並固定隨機種子。Keras 必須在 `import` 之前設定 backend。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "2c3a777b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-06T13:54:06.145867Z",
     "iopub.status.busy": "2026-10-06T13:54:06.145499Z",
     "iopub.status.idle": "2026-10-06T13:54:24.588925Z",
     "shell.execute_reply": "2026-10-06T13:54:24.587897Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "numpy 2.1.3 | pandas 2.2.3 | scikit-learn 1.6.1 | matplotlib 3.10.0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "keras 3.13.2 | backend: tensorflow\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "os.environ[\"KERAS_BACKEND\"] = \"tensorflow\"   # must be set before importing keras\n",
    "import time\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import sklearn\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "print(\"numpy\", np.__version__, \"| pandas\", pd.__version__,\n",
    "      \"| scikit-learn\", sklearn.__version__, \"| matplotlib\", matplotlib.__version__)\n",
    "RS = 42\n",
    "\n",
    "try:\n",
    "    import keras\n",
    "    from keras import layers, ops\n",
    "    keras.utils.set_random_seed(RS)   # results may still differ slightly across versions/hardware\n",
    "    HAS_KERAS = True\n",
    "    print(\"keras\", keras.__version__, \"| backend:\", keras.backend.backend())\n",
    "except ImportError:\n",
    "    keras = None\n",
    "    HAS_KERAS = False\n",
    "    print(\"Keras is not installed in this environment -> sections 3-7 will be skipped.\")\n",
    "    print(\"Run this notebook on Google Colab to try them, or `pip install tensorflow keras` locally.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4b07cfff",
   "metadata": {},
   "source": [
    "## 1. 讀資料\n",
    "直接從 Hugging Face 讀兩個 `.jsonl` 檔（訓練 853 筆、測試 212 筆），不需要安裝 `datasets` 套件。網路失敗時會印出清楚的錯誤訊息。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "de7d1a9d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-06T13:54:24.596516Z",
     "iopub.status.busy": "2026-10-06T13:54:24.595667Z",
     "iopub.status.idle": "2026-10-06T13:54:25.309162Z",
     "shell.execute_reply": "2026-10-06T13:54:25.308129Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train: (853, 2) | test: (212, 2)\n",
      "number of diagnoses: 22\n",
      "min    32.0\n",
      "max    40.0\n",
      "Name: count, dtype: float64\n",
      "\n",
      "[cervical spondylosis] I've been having a lot of pain in my neck and back. I've also been having trouble with my balance and coordination. I've been coughing a lot and my limbs feel weak.\n",
      "\n",
      "[bronchial asthma] I've been coughing a lot, and it's hard to breathe. I've also been coughing up a lot of thick, mucusy saliva. I've been feeling really tired, and I have a fever.\n",
      "\n",
      "[fungal infection] I have a rash all over my body, and it's really itchy. I have some bumps that are quite firm, and some areas that are a darker shade from the rest of my skin. It's really unpleasant.\n"
     ]
    }
   ],
   "source": [
    "BASE = \"https://huggingface.co/datasets/gretelai/symptom_to_diagnosis/resolve/main/\"\n",
    "try:\n",
    "    train_df = pd.read_json(BASE + \"train.jsonl\", lines=True)\n",
    "    test_df = pd.read_json(BASE + \"test.jsonl\", lines=True)\n",
    "except Exception as e:\n",
    "    raise RuntimeError(\n",
    "        \"Could not download the dataset from Hugging Face. Check your internet connection, \"\n",
    "        \"or download train.jsonl / test.jsonl manually from \" + BASE) from e\n",
    "\n",
    "print(\"train:\", train_df.shape, \"| test:\", test_df.shape)\n",
    "print(\"number of diagnoses:\", train_df[\"output_text\"].nunique())\n",
    "print(train_df[\"output_text\"].value_counts().describe()[[\"min\", \"max\"]])\n",
    "for i in [0, 100, 400]:\n",
    "    print(f\"\\n[{train_df.loc[i, 'output_text']}]\", train_df.loc[i, \"input_text\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "95b8ede6",
   "metadata": {},
   "source": [
    "22 個診斷每類大約 32–40 筆，刻意均衡。順便看一下句子有多長（以空白切開的字數）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "554552e8",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-06T13:54:25.313273Z",
     "iopub.status.busy": "2026-10-06T13:54:25.312970Z",
     "iopub.status.idle": "2026-10-06T13:54:25.322798Z",
     "shell.execute_reply": "2026-10-06T13:54:25.321416Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "words per description: median 28, max 55\n"
     ]
    }
   ],
   "source": [
    "n_words = train_df[\"input_text\"].str.split().str.len()\n",
    "print(f\"words per description: median {n_words.median():.0f}, max {n_words.max()}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "27a1b193",
   "metadata": {},
   "source": [
    "## 2. 基準模型：TF-IDF + 邏輯迴歸\n",
    "第 5 章用過詞袋（bag-of-words）。TF-IDF 是它的加權版：在這句話出現越多次、在所有句子裡越少見的字，分數越高。`ngram_range=(1, 2)` 讓「chest pain」這種兩個字的片語也成為一欄，算是保留了一點點字序。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "72f1e7b7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-06T13:54:25.325504Z",
     "iopub.status.busy": "2026-10-06T13:54:25.325189Z",
     "iopub.status.idle": "2026-10-06T13:54:26.405336Z",
     "shell.execute_reply": "2026-10-06T13:54:26.403172Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TF-IDF + logistic regression, test accuracy: 0.906\n",
      "features (unigrams + bigrams): 6203\n"
     ]
    }
   ],
   "source": [
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.pipeline import make_pipeline\n",
    "\n",
    "X_train_text, y_train_text = train_df[\"input_text\"], train_df[\"output_text\"]\n",
    "X_test_text, y_test_text = test_df[\"input_text\"], test_df[\"output_text\"]\n",
    "\n",
    "baseline = make_pipeline(TfidfVectorizer(ngram_range=(1, 2)),\n",
    "                         LogisticRegression(max_iter=2000))\n",
    "baseline.fit(X_train_text, y_train_text)\n",
    "pred_base = baseline.predict(X_test_text)\n",
    "acc_base = np.mean(pred_base == y_test_text)\n",
    "print(f\"TF-IDF + logistic regression, test accuracy: {acc_base:.3f}\")\n",
    "print(\"features (unigrams + bigrams):\", len(baseline[0].vocabulary_))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1e6ef976",
   "metadata": {},
   "source": [
    "不到一秒就有不錯的準確率。詞袋的盲點是**順序**：下面兩句意思相反，在單字詞袋裡卻一模一樣。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "b2268122",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-06T13:54:26.408421Z",
     "iopub.status.busy": "2026-10-06T13:54:26.407979Z",
     "iopub.status.idle": "2026-10-06T13:54:26.414876Z",
     "shell.execute_reply": "2026-10-06T13:54:26.413934Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['after' 'before' 'eating' 'not' 'pain']\n",
      "[[1 1 1 1 1]\n",
      " [1 1 1 1 1]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.feature_extraction.text import CountVectorizer\n",
    "\n",
    "pair = [\"pain after eating not before\", \"pain before eating not after\"]\n",
    "bow = CountVectorizer().fit(pair)\n",
    "print(bow.get_feature_names_out())\n",
    "print(bow.transform(pair).toarray())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e3e221b5",
   "metadata": {},
   "source": [
    "## 3. 斷詞：把句子變成整數序列（Keras）\n",
    "`TextVectorization` 會建立詞彙表（vocabulary），把每個字換成一個整數編號；0 保留給補齊長度用的填充（padding），1 是詞彙表外的字 `[UNK]`。\n",
    "我們再在每句最前面加一個特殊的 `[CLS]` 記號：模型最後只看 `[CLS]` 位置的輸出來分類，所以 `[CLS]` 會透過注意力去「讀」整句話——這是 BERT 的做法，也讓注意力權重比較好解讀。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e1fd05c5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-06T13:54:26.417725Z",
     "iopub.status.busy": "2026-10-06T13:54:26.417483Z",
     "iopub.status.idle": "2026-10-06T13:54:26.539689Z",
     "shell.execute_reply": "2026-10-06T13:54:26.538379Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "vocabulary size (incl. padding, [UNK], [CLS]): 1040\n",
      "X_tr shape: (853, 65)\n",
      "first sentence as tokens: ['[CLS]', 'ive', 'been', 'having', 'a', 'lot', 'of', 'pain', 'in', 'my', 'neck', 'and', 'back', 'ive', 'also', 'been', 'having', 'trouble', 'with', 'my', 'balance', 'and', 'coordination', 'ive', 'been', 'coughing', 'a', 'lot', 'and', 'my', 'limbs', 'feel', 'weak']\n",
      "first sentence as ids   : [1039, 8, 7, 14, 5, 10, 13, 20, 18, 4, 33, 2, 66, 8, 9, 7, 14, 30, 103, 4, 149, 2, 992, 8, 7, 38, 5, 10, 2, 4, 425, 23, 46]\n"
     ]
    }
   ],
   "source": [
    "MAXLEN = 64   # longest description has 55 words; shorter ones are padded with 0\n",
    "\n",
    "if HAS_KERAS:\n",
    "    vectorizer = layers.TextVectorization(max_tokens=5000, output_sequence_length=MAXLEN)\n",
    "    vectorizer.adapt(X_train_text.to_numpy())\n",
    "    vocab = [str(t) for t in vectorizer.get_vocabulary()] + [\"[CLS]\"]\n",
    "    CLS_ID = len(vocab) - 1\n",
    "    VOCAB_SIZE = len(vocab)\n",
    "\n",
    "    def encode(texts):\n",
    "        ids = vectorizer(np.asarray(texts)).numpy()\n",
    "        cls = np.full((len(ids), 1), CLS_ID)\n",
    "        return np.concatenate([cls, ids], axis=1).astype(\"int32\")\n",
    "\n",
    "    X_tr, X_te = encode(X_train_text), encode(X_test_text)\n",
    "    classes = sorted(y_train_text.unique())\n",
    "    y_tr = y_train_text.map({c: i for i, c in enumerate(classes)}).to_numpy()\n",
    "    y_te = y_test_text.map({c: i for i, c in enumerate(classes)}).to_numpy()\n",
    "\n",
    "    print(\"vocabulary size (incl. padding, [UNK], [CLS]):\", VOCAB_SIZE)\n",
    "    print(\"X_tr shape:\", X_tr.shape)\n",
    "    n = int((X_tr[0] != 0).sum())\n",
    "    print(\"first sentence as tokens:\", [vocab[t] for t in X_tr[0, :n]])\n",
    "    print(\"first sentence as ids   :\", X_tr[0, :n].tolist())\n",
    "else:\n",
    "    print(\"Skipped (no Keras).\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2e03755b",
   "metadata": {},
   "source": [
    "注意：Keras 的 `TextVectorization` 預設會轉小寫、去掉標點，再用空白切字。真正的大型語言模型用的是子詞（subword）斷詞，例如把 *gastroesophageal* 切成好幾段，這樣就不會有詞彙表外的字。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a14c3966",
   "metadata": {},
   "source": [
    "## 4. 組一個迷你 Transformer 編碼器\n",
    "三個零件：\n",
    "\n",
    "1. **詞嵌入＋位置嵌入**：每個字編號查表變成 64 維向量，再加上「第幾個位置」的向量，模型才知道字序。\n",
    "2. **Transformer 區塊**：多頭自注意力（`MultiHeadAttention`）→ 殘差相加＋層正規化 → 前饋網路 → 再一次殘差相加＋層正規化。\n",
    "3. **分類頭**：取 `[CLS]` 位置的輸出，接 softmax 輸出 22 個診斷的機率。\n",
    "\n",
    "`attention_mask` 告訴注意力不要去看填充的 0。另外建一個共用同一組權重的 `attn_model`，專門輸出注意力權重。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "073e7034",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-06T13:54:26.542686Z",
     "iopub.status.busy": "2026-10-06T13:54:26.542373Z",
     "iopub.status.idle": "2026-10-06T13:54:26.736894Z",
     "shell.execute_reply": "2026-10-06T13:54:26.736036Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"functional\"</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1mModel: \"functional\"\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓\n",
       "┃<span style=\"font-weight: bold\"> Layer (type)        </span>┃<span style=\"font-weight: bold\"> Output Shape      </span>┃<span style=\"font-weight: bold\">    Param # </span>┃<span style=\"font-weight: bold\"> Connected to      </span>┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩\n",
       "│ input_layer         │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>)        │          <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │ -                 │\n",
       "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">InputLayer</span>)        │                   │            │                   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ not_equal           │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>)        │          <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │ input_layer[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>][<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>] │\n",
       "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">NotEqual</span>)          │                   │            │                   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ token_and_position… │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)    │     <span style=\"color: #00af00; text-decoration-color: #00af00\">70,720</span> │ input_layer[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>][<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>] │\n",
       "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">TokenAndPositionE…</span> │                   │            │                   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ expand_dims         │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>)     │          <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │ not_equal[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>][<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>]   │\n",
       "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">ExpandDims</span>)        │                   │            │                   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ self_attention      │ [(<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>),  │     <span style=\"color: #00af00; text-decoration-color: #00af00\">16,640</span> │ token_and_positi… │\n",
       "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">MultiHeadAttentio…</span> │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">2</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>,     │            │ token_and_positi… │\n",
       "│                     │ <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>)]              │            │ expand_dims[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>][<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>] │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ dropout_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)    │          <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │ self_attention[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>… │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ add (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Add</span>)           │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)    │          <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │ token_and_positi… │\n",
       "│                     │                   │            │ dropout_1[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>][<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>]   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ layer_normalization │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)    │        <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span> │ add[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>][<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>]         │\n",
       "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LayerNormalizatio…</span> │                   │            │                   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)       │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)   │      <span style=\"color: #00af00; text-decoration-color: #00af00\">8,320</span> │ layer_normalizat… │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ dense_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)     │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)    │      <span style=\"color: #00af00; text-decoration-color: #00af00\">8,256</span> │ dense[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>][<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>]       │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ dropout_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)    │          <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │ dense_1[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>][<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>]     │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ add_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Add</span>)         │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)    │          <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │ layer_normalizat… │\n",
       "│                     │                   │            │ dropout_2[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>][<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>]   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ layer_normalizatio… │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)    │        <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span> │ add_1[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>][<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>]       │\n",
       "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LayerNormalizatio…</span> │                   │            │                   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ get_item (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">GetItem</span>)  │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)        │          <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │ layer_normalizat… │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ dropout_3 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)        │          <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │ get_item[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>][<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>]    │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ dense_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)     │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">22</span>)        │      <span style=\"color: #00af00; text-decoration-color: #00af00\">1,430</span> │ dropout_3[<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>][<span style=\"color: #00af00; text-decoration-color: #00af00\">0</span>]   │\n",
       "└─────────────────────┴───────────────────┴────────────┴───────────────────┘\n",
       "</pre>\n"
      ],
      "text/plain": [
       "┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓\n",
       "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)       \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape     \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m   Param #\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mConnected to     \u001b[0m\u001b[1m \u001b[0m┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩\n",
       "│ input_layer         │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m65\u001b[0m)        │          \u001b[38;5;34m0\u001b[0m │ -                 │\n",
       "│ (\u001b[38;5;33mInputLayer\u001b[0m)        │                   │            │                   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ not_equal           │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m65\u001b[0m)        │          \u001b[38;5;34m0\u001b[0m │ input_layer[\u001b[38;5;34m0\u001b[0m][\u001b[38;5;34m0\u001b[0m] │\n",
       "│ (\u001b[38;5;33mNotEqual\u001b[0m)          │                   │            │                   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ token_and_position… │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m65\u001b[0m, \u001b[38;5;34m64\u001b[0m)    │     \u001b[38;5;34m70,720\u001b[0m │ input_layer[\u001b[38;5;34m0\u001b[0m][\u001b[38;5;34m0\u001b[0m] │\n",
       "│ (\u001b[38;5;33mTokenAndPositionE…\u001b[0m │                   │            │                   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ expand_dims         │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m, \u001b[38;5;34m65\u001b[0m)     │          \u001b[38;5;34m0\u001b[0m │ not_equal[\u001b[38;5;34m0\u001b[0m][\u001b[38;5;34m0\u001b[0m]   │\n",
       "│ (\u001b[38;5;33mExpandDims\u001b[0m)        │                   │            │                   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ self_attention      │ [(\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m65\u001b[0m, \u001b[38;5;34m64\u001b[0m),  │     \u001b[38;5;34m16,640\u001b[0m │ token_and_positi… │\n",
       "│ (\u001b[38;5;33mMultiHeadAttentio…\u001b[0m │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m2\u001b[0m, \u001b[38;5;34m65\u001b[0m,     │            │ token_and_positi… │\n",
       "│                     │ \u001b[38;5;34m65\u001b[0m)]              │            │ expand_dims[\u001b[38;5;34m0\u001b[0m][\u001b[38;5;34m0\u001b[0m] │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ dropout_1 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m65\u001b[0m, \u001b[38;5;34m64\u001b[0m)    │          \u001b[38;5;34m0\u001b[0m │ self_attention[\u001b[38;5;34m0\u001b[0m… │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ add (\u001b[38;5;33mAdd\u001b[0m)           │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m65\u001b[0m, \u001b[38;5;34m64\u001b[0m)    │          \u001b[38;5;34m0\u001b[0m │ token_and_positi… │\n",
       "│                     │                   │            │ dropout_1[\u001b[38;5;34m0\u001b[0m][\u001b[38;5;34m0\u001b[0m]   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ layer_normalization │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m65\u001b[0m, \u001b[38;5;34m64\u001b[0m)    │        \u001b[38;5;34m128\u001b[0m │ add[\u001b[38;5;34m0\u001b[0m][\u001b[38;5;34m0\u001b[0m]         │\n",
       "│ (\u001b[38;5;33mLayerNormalizatio…\u001b[0m │                   │            │                   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ dense (\u001b[38;5;33mDense\u001b[0m)       │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m65\u001b[0m, \u001b[38;5;34m128\u001b[0m)   │      \u001b[38;5;34m8,320\u001b[0m │ layer_normalizat… │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ dense_1 (\u001b[38;5;33mDense\u001b[0m)     │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m65\u001b[0m, \u001b[38;5;34m64\u001b[0m)    │      \u001b[38;5;34m8,256\u001b[0m │ dense[\u001b[38;5;34m0\u001b[0m][\u001b[38;5;34m0\u001b[0m]       │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ dropout_2 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m65\u001b[0m, \u001b[38;5;34m64\u001b[0m)    │          \u001b[38;5;34m0\u001b[0m │ dense_1[\u001b[38;5;34m0\u001b[0m][\u001b[38;5;34m0\u001b[0m]     │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ add_1 (\u001b[38;5;33mAdd\u001b[0m)         │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m65\u001b[0m, \u001b[38;5;34m64\u001b[0m)    │          \u001b[38;5;34m0\u001b[0m │ layer_normalizat… │\n",
       "│                     │                   │            │ dropout_2[\u001b[38;5;34m0\u001b[0m][\u001b[38;5;34m0\u001b[0m]   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ layer_normalizatio… │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m65\u001b[0m, \u001b[38;5;34m64\u001b[0m)    │        \u001b[38;5;34m128\u001b[0m │ add_1[\u001b[38;5;34m0\u001b[0m][\u001b[38;5;34m0\u001b[0m]       │\n",
       "│ (\u001b[38;5;33mLayerNormalizatio…\u001b[0m │                   │            │                   │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ get_item (\u001b[38;5;33mGetItem\u001b[0m)  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m)        │          \u001b[38;5;34m0\u001b[0m │ layer_normalizat… │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ dropout_3 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m)        │          \u001b[38;5;34m0\u001b[0m │ get_item[\u001b[38;5;34m0\u001b[0m][\u001b[38;5;34m0\u001b[0m]    │\n",
       "├─────────────────────┼───────────────────┼────────────┼───────────────────┤\n",
       "│ dense_2 (\u001b[38;5;33mDense\u001b[0m)     │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m22\u001b[0m)        │      \u001b[38;5;34m1,430\u001b[0m │ dropout_3[\u001b[38;5;34m0\u001b[0m][\u001b[38;5;34m0\u001b[0m]   │\n",
       "└─────────────────────┴───────────────────┴────────────┴───────────────────┘\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">105,622</span> (412.59 KB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m105,622\u001b[0m (412.59 KB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">105,622</span> (412.59 KB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m105,622\u001b[0m (412.59 KB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "if HAS_KERAS:\n",
    "    class TokenAndPositionEmbedding(layers.Layer):\n",
    "        \"\"\"Word embedding + learned position embedding.\"\"\"\n",
    "        def __init__(self, maxlen, vocab_size, dim, **kwargs):\n",
    "            super().__init__(**kwargs)\n",
    "            self.token_emb = layers.Embedding(vocab_size, dim)\n",
    "            self.pos_emb = layers.Embedding(maxlen, dim)\n",
    "\n",
    "        def call(self, x):\n",
    "            positions = ops.arange(ops.shape(x)[-1])\n",
    "            return self.token_emb(x) + self.pos_emb(positions)\n",
    "\n",
    "    def build_model(num_heads=2, dim=64, use_position=True):\n",
    "        seq_len = MAXLEN + 1\n",
    "        inputs = keras.Input(shape=(seq_len,), dtype=\"int32\")\n",
    "        pad_mask = ops.expand_dims(ops.not_equal(inputs, 0), 1)       # do not attend to padding\n",
    "        if use_position:\n",
    "            x = TokenAndPositionEmbedding(seq_len, VOCAB_SIZE, dim)(inputs)\n",
    "        else:\n",
    "            x = layers.Embedding(VOCAB_SIZE, dim)(inputs)\n",
    "        # --- one Transformer encoder block ---\n",
    "        attn_out, attn_scores = layers.MultiHeadAttention(\n",
    "            num_heads=num_heads, key_dim=dim // num_heads, name=\"self_attention\")(\n",
    "            x, x, attention_mask=pad_mask, return_attention_scores=True)\n",
    "        x = layers.LayerNormalization()(x + layers.Dropout(0.1)(attn_out))   # residual + norm\n",
    "        ff = layers.Dense(2 * dim, activation=\"relu\")(x)\n",
    "        ff = layers.Dense(dim)(ff)\n",
    "        x = layers.LayerNormalization()(x + layers.Dropout(0.1)(ff))        # residual + norm\n",
    "        # --- classification head: read the [CLS] position ---\n",
    "        cls_vec = layers.Dropout(0.2)(x[:, 0, :])\n",
    "        outputs = layers.Dense(len(classes), activation=\"softmax\")(cls_vec)\n",
    "        model = keras.Model(inputs, outputs)\n",
    "        attn_model = keras.Model(inputs, attn_scores)   # shares weights with model\n",
    "        model.compile(optimizer=keras.optimizers.Adam(learning_rate=3e-3),\n",
    "                      loss=\"sparse_categorical_crossentropy\", metrics=[\"accuracy\"])\n",
    "        return model, attn_model\n",
    "\n",
    "    model, attn_model = build_model()\n",
    "    model.summary()\n",
    "else:\n",
    "    print(\"Skipped (no Keras).\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2f2fb8b8",
   "metadata": {},
   "source": [
    "## 5. 訓練\n",
    "從訓練集再切 15% 當驗證集，驗證損失連續 6 個 epoch 沒進步就停下並還原最佳權重。CPU 上大約 30 秒到 2 分鐘。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "f9fa7051",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-06T13:54:26.739864Z",
     "iopub.status.busy": "2026-10-06T13:54:26.739616Z",
     "iopub.status.idle": "2026-10-06T13:54:56.514249Z",
     "shell.execute_reply": "2026-10-06T13:54:56.513082Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "trained 17 epochs in 28.6 s\n",
      "parameters: 105622\n"
     ]
    },
    {
     "data": {
      "image/png": "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r776ClOnTsXOnTvx2GOP4dZbb8WKFSuM2zzxxBMqkF6/fj3Cw8MxcuRIVFRUGIPlG2+8ETfddBO2b9+OF154Ac899xymT59ufPy4cePw/fff47333sPu3bvxySefwN/fv8Z+/Pe//1WvsWHDBri7u+POO+9swXeBiIjI9vGYTWTn9ETkdEpLS/W+vr76VatW1bj9rrvu0o8dO1a/bNkyvfx5mDlzpvG+EydO6H18fPSzZs1S12+++Wb90KFDazz+iSee0CclJan1vXv3qudYvHhxrftgeI0lS5YYb1uwYIG6raSkxKw/LxERkb3iMZvI/nGkm8gJHThwAMXFxRg6dKgaeTYsMvJ98OBB43YDBgwwroeEhKBTp05qxFrI5QUXXFDjeeX6/v37odPpsGXLFri5uWHQoEH17oukrxtER0ery5ycHLP9rERERPaMx2wi++du7R0gopZXWFioLmXOduvWrWvcJ3OvTQPvppJ54g3h4eFhXJd55Ia5a0RERMRjNpEj4Eg3kRNKSkpSwXVqaqoqbma6SNEzgzVr1hjXT506hX379qFLly7qulyuXLmyxvPK9Y4dO6oR7u7du6vg2XSOOBEREfGYTeRsONJN5IQCAgLw+OOPq+JpEhhfeOGFyMvLU0FzYGAg2rZtq7Z76aWXEBoaisjISFXwLCwsDKNGjVL3/fvf/0a/fv3w8ssvY8yYMVi9ejU++OADfPTRR+p+qWY+fvx4VRhNCqlJdfQjR46o1HEpwEZEREQ8ZhM5BWtPKici66iqqtK/8847+k6dOuk9PDz04eHh+mHDhulXrFhhLHL2yy+/6Lt27ar39PTU9+/fX79169YazzF79mxVOE0e36ZNG/0bb7xR434piPbYY4/po6Oj1XMkJCTop02bpu4zvMapU6eM22/evFnddujQoRZ6F4iIiGwfj9lE9s1F/mftwJ+IbIv06b7kkktUSnlwcLC1d4eIiIjqwGM2ke3jnG4iIiIiIiIiC2HQTURERERERGQhTC8nIiIiIiIishCOdBMRERERERFZCINuIiIiIiIiIgth0E1ERERERERkIQy6iYiIiIiIiCyEQTcRERERERGRhTDoJiIiIiIiIrIQBt1EREREREREFsKgm4iIiIiIiMhCGHQTERERERERwTL+H32lRseszOJxAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x350 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "if HAS_KERAS:\n",
    "    keras.utils.set_random_seed(RS)\n",
    "    model, attn_model = build_model()\n",
    "    t0 = time.time()\n",
    "    hist = model.fit(X_tr, y_tr, validation_split=0.15, epochs=60, batch_size=32, verbose=0,\n",
    "                     callbacks=[keras.callbacks.EarlyStopping(\n",
    "                         monitor=\"val_loss\", patience=6, restore_best_weights=True)])\n",
    "    print(f\"trained {len(hist.history['loss'])} epochs in {time.time() - t0:.1f} s\")\n",
    "    print(\"parameters:\", model.count_params())\n",
    "\n",
    "    fig, ax = plt.subplots(1, 2, figsize=(10, 3.5))\n",
    "    ax[0].plot(hist.history[\"loss\"], label=\"train\"); ax[0].plot(hist.history[\"val_loss\"], label=\"validation\")\n",
    "    ax[0].set_xlabel(\"epoch\"); ax[0].set_ylabel(\"loss\"); ax[0].legend()\n",
    "    ax[1].plot(hist.history[\"accuracy\"], label=\"train\"); ax[1].plot(hist.history[\"val_accuracy\"], label=\"validation\")\n",
    "    ax[1].set_xlabel(\"epoch\"); ax[1].set_ylabel(\"accuracy\"); ax[1].legend()\n",
    "    plt.tight_layout(); plt.show()\n",
    "else:\n",
    "    hist = None\n",
    "    print(\"Skipped (no Keras).\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dc29cd34",
   "metadata": {},
   "source": [
    "## 6. 測試集：和 TF-IDF 基準比較\n",
    "測試集只有 212 筆，答錯一題準確率就差 0.5 個百分點。所以除了準確率，我們用**自助法（bootstrap）**重抽測試集 2,000 次，估計兩個模型準確率差距的 95% 信賴區間。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "f6672e86",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-06T13:54:56.516763Z",
     "iopub.status.busy": "2026-10-06T13:54:56.516549Z",
     "iopub.status.idle": "2026-10-06T13:54:58.074524Z",
     "shell.execute_reply": "2026-10-06T13:54:58.073613Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TF-IDF + LR       test accuracy: 0.906\n",
      "mini Transformer  test accuracy: 0.929\n",
      "difference (Transformer - TF-IDF): +0.024, bootstrap 95% CI [-0.009, +0.061]\n",
      "both wrong on 10 test descriptions\n"
     ]
    }
   ],
   "source": [
    "if hist is not None:\n",
    "    proba_tf = model.predict(X_te, verbose=0)\n",
    "    pred_tf = np.array(classes)[proba_tf.argmax(axis=1)]\n",
    "    acc_tf = np.mean(pred_tf == y_test_text.to_numpy())\n",
    "    print(f\"TF-IDF + LR       test accuracy: {acc_base:.3f}\")\n",
    "    print(f\"mini Transformer  test accuracy: {acc_tf:.3f}\")\n",
    "\n",
    "    correct_base = (pred_base == y_test_text.to_numpy()).astype(float)\n",
    "    correct_tf = (pred_tf == y_test_text.to_numpy()).astype(float)\n",
    "    rng = np.random.default_rng(RS)\n",
    "    idx = rng.integers(0, len(correct_tf), size=(2000, len(correct_tf)))\n",
    "    diff = correct_tf[idx].mean(axis=1) - correct_base[idx].mean(axis=1)\n",
    "    lo, hi = np.percentile(diff, [2.5, 97.5])\n",
    "    print(f\"difference (Transformer - TF-IDF): {acc_tf - acc_base:+.3f}, bootstrap 95% CI [{lo:+.3f}, {hi:+.3f}]\")\n",
    "    print(\"both wrong on\", int(((correct_base == 0) & (correct_tf == 0)).sum()), \"test descriptions\")\n",
    "else:\n",
    "    print(\"Skipped (no Keras).\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "83d2b7ce",
   "metadata": {},
   "source": [
    "如果信賴區間跨過 0，代表這份測試集**不足以判斷哪個模型比較好**。在小資料上，簡單的 TF-IDF 常常就夠用；Transformer 的優勢要在大量資料、或先在大量文字上預訓練之後才會顯現。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "63d52fbe",
   "metadata": {},
   "source": [
    "## 7. 打開黑盒子：注意力權重\n",
    "`attn_model` 輸出的形狀是 `(句子數, 頭數, 查詢位置, 被看的位置)`。我們看一則測試句：\n",
    "\n",
    "- 上圖：每個注意力頭裡，`[CLS]` 把注意力分給哪些字（每一列加總為 1）。\n",
    "- 下圖：第 1 個頭的完整注意力矩陣——每一列是一個字「去看」其他字的權重。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "12859f28",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-06T13:54:58.078669Z",
     "iopub.status.busy": "2026-10-06T13:54:58.077493Z",
     "iopub.status.idle": "2026-10-06T13:54:59.834187Z",
     "shell.execute_reply": "2026-10-06T13:54:59.833274Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "text      : I've been feeling really sick. I have a fever, chills, nausea, and a headache. I've also been sweating a lot and my muscles ache.\n",
      "true label: malaria | predicted: malaria (1.00)\n",
      "uniform attention would be 1/25 = 0.040\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABG0AAALkCAYAAAC1AcjtAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3QeYE+XWwPGznbIsvfem9C5NFKSrKNUCKh0LWBFRPgugKIiAiKIoSlHhWhDRe1VUmgoiCAIqCAjSpAgosCxla77nvDox2cZmdklmN/+fz0g2yWQmkzZz5rznhLhcLpcAAAAAAADAUUIDvQIAAAAAAABIi6ANAAAAAACAAxG0AQAAAAAAcCCCNgAAAAAAAA5E0AYAAAAAAMCBCNoAAAAAAAA4EEEbAAAAAAAAByJoAwAAAAAA4EAEbQAAAAAAAByIoA0AINcZOHCghISEmKlevXriFD169HDkel1s48aNM885GK1atco890WLFolTzJs3z6zT3r17A70qAAAgmwjaAABypRIlSshbb70lkyZNSnNbcnKyzJ07V9q1ayfFihWTqKgoqVKligwaNEg2bNiQ5uDW87r0HDt2TO677z6pVauW5M+fX0qVKiXNmzeXhx9+WOLi4tz3e+CBB8w66f1y0ssvv2zWNbVt27aZgIk/Ds7Pnj1rlqVBCgAAAPgHQRsAQK5UsGBBufXWW6Vbt25e1587d85cN3jwYHG5XPJ///d/8sorr0j//v1l7dq1Jtjy+++/Z3k5f/31lzRr1kzefPNNufbaa2XGjBkycuRIqVGjhnnc48ePu+/btm1bs06lS5f2W9Bm/Pjxfgva6LLSC9o89thjZrsDAAAgZ4Xn8OMBABBQDz30kCxdulSef/55uf/++71uGzt2rLneF2+88Ybs379f1qxZI61bt/a6LTY2ViIjIyXYhYeHmymvOnPmjAkSAgAA+BuZNgCAPEMzaF599VXp1KlTmoCNCgsLk1GjRkmFChWy/Ji7d+8287Vs2TLNbTExMZIvXz7b66tDuNq3b2+GW+kQrjp16pjsHU86rGvr1q3y1Vdfuevl6LAvzby54YYbzH2uuuoq922emTCfffaZXHHFFSbgUKhQIZMppI+Vuj5QdHS0HDx40NTk0cslS5Y020mHmSnN5NHrlGbbWMvS4VIZ1bRJSkqSp556SqpXr+4enqZZT/Hx8Wmen2ZGrV692mRB6fasVq2ayWy6EF0vXe6UKVNMMK5y5cpm+JpmPP38889p7r99+3bp06ePGTKny9EMqo8//tjrPtaQOd3ew4cPN69NVt4vKSkp8vTTT5v76mN36NBBdu3aleZ+69atk65du0rhwoWlQIECZl01IOhp3759ZtmXXnqpeT7Fixc3r3V6GVX6eup7SO+ny54wYYJZFwAAkDfk3dNiAICgo0EKDRbcdtttOfaYGgjQ4IXWqhkwYIDkJA3Q1K1bV66//nqTqfLf//7XHKzrQfeIESPMfaZPny733HOPCaY8+uij5jodfqXBkHvvvdcM19JgSO3atc1t1r/W+nbp0kWeffZZM7xJl9emTRvZtGmTCZZY9Pnp/Vq0aGECIMuWLZOpU6eaZdx1110mYKPz6uWePXtKr169zHwNGjTI8LkNHTpU5s+fb4IkDz74oAlWTJw4UX755Rf58MMPve6rwQ2935AhQ8w6z5kzxwSTmjZtarbPhWiA5/Tp02abnT9/Xl544QUTyPjpp5/cQ9U0uHH55ZdL+fLl5ZFHHjGBrPfee88Eqj744APzvDzp66DP+4knnjCZNheitZVCQ0NNsOvUqVMyefJkueWWW8zztqxYsUKuvvpq87w060vvbwXuvvnmGxO0Ut9//718++23cvPNN5tAjAZrdPtrsE6HxGmwRx05csQE7PQ9bz2n1157zQRwAABAHuECACCXGTBggKty5cpprn/ggQdc+tO2adOmLD3O3Llzzf2///77DO9z5MgRV8mSJc39atWq5brzzjtdCxcudJ08eTLDedq2beuqW7fuBZd/9uzZNNd16dLFVa1aNa/r9LH0MVN7//33zXqtXLnS6/rTp0+7ihQp4ho2bFia51K4cGGv63Vb6mM8+eSTXvdt3Lixq2nTpu6/jx07Zu43duzYNOuh13nuUmzevNn8PXToUK/7jRo1yly/YsUK93X6Oup1X3/9tfu6o0ePuqKiolwPPvigKzN79uwx8+bPn9/1+++/u69ft26duV7fD5YOHTq46tev7zp//rz7upSUFFfr1q1dNWvWTPOeaNOmjSspKcl1Ibrt9f61a9d2xcfHu69/4YUXzPU//fSTe1m6HH199bLne6Bq1aquTp06eV2X2tq1a83jvfnmm+7r7r//fnOdPl/PbaevsV6v2wcAAORuDI8CAOQZ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AAAHCg/0CgDIPX7//XepUKFCurd999130rJlS7+vE3y3bds22b9/vyQkJHhdf/311/ttcyYmJkr+/Pll8+bNUq9ePb8tF8HDCe9zIBjx2QOAnEXQBkEvNjY23W0QEhJi2gtGRkYGZBudOXNGChYsKE7SuXNnWb16tRQrVszr+jVr1si1114rJ0+e9Nu6jBw5Up566imzjfRyZqZNm+a39XKy3377TXr27Ck//fSTeX+7XC5zvV5WycnJfluXiIgIqVSpkl+XmVXnzp0z26ZAgQLm73379smHH34oderUMZ8BOJuT3uew59ixY7Jjxw5z+dJLL5WSJUuyKT18/PHH6W4PfY/ny5dPatSoIVWrVvX7NnPiZ+/JJ5+UUaNGub/PPb/nn3vuOXniiSf8vk5Opa9ftWrVAr0aucI333wjr776quzevVsWLVok5cuXl7feest87tq0aRPo1UMeRMvvi3TAn5mYmBjxJ/0SmTVrluzZs0fWrl0rlStXlunTp5svlu7du0sg/Prrr7Jy5Uo5evSopKSkeN3m7x/Q0NBQ9w5FejSzZODAgTJ27FhzX3+Jjo6WG2+8UQYPHuyYHwBdlx9//NG8doUKFTLXff3113LdddfJuHHj5IEHHvDbulx11VXmQLpIkSLmckb0tV2xYoUEQlJSkqxatcr8qPfr189ss0OHDpnvAH19/U1fp7CwMHn99dfN53/9+vXy559/yoMPPihTpkyRK664wq/r88Ybb8jixYvNd1TqQGAgaWCmV69ecuedd5pAZK1atUyQ6fjx4yYAeNdddwV6FeX8+fNpMkj89dtStGjRTL8zPf31118S7O9zi76XdOdevw8eeugh857/4YcfpHTp0maHPxCctn+gJyvuueces17WAb6+lv3795cXX3wxzYF3sO+3WEERi3Wd/qv7DUuWLDGf12D+7On6HD58WEqVKuV1va6XXuevQJLTvzet91Xbtm1lyJAh0qdPHxMADLSlS5ea/SVrP3jmzJkye/ZscxJFL/vz/W354IMP5LbbbpNbbrnFfFdpZpkGu1566SX59NNPzQTkOBeyJSQkxBUaGprlKSwszLV7926/bfWXX37ZVaJECdeECRNc+fPndy977ty5rnbt2rkC4bXXXjPboXTp0q6GDRu6GjVq5J4aN27s9/WZP3++q0KFCq7HHnvM9fHHH5tJL1esWNH16quvmm1XpEgR19NPP+3X9frwww9d3bt3d0VERLhq1qzpmjhxouvgwYOuQEpOTnb17NnT1bZtW9f58+ddK1ascEVHR7umT58e0PVyor1797pq1arlKlCggNfn/t5773XdcccdAVmn4sWLu7Zs2WIux8TEuLZv324uL1++3Hz+/E2Xqe+fqKgo1yWXXGI+/55ToOh2+vnnn83l2bNnuxo0aGDe+++99555TQPlzJkzrhEjRrhKliyZ7u+Lv8ybN889TZ061VW0aFHXzTff7HrhhRfMpJf1umnTprkCwWnvc6Xro69bjRo1XOHh4e7vg0cffdR12223BWSdnLh/cPvtt7uqVavm+vTTT12nTp0y0yeffOKqXr26684773QFitP2W5YtW+Zq0aKF+Tc2NtZMerlVq1Zme61evdpVt25d1+DBg13B/tnT/fSjR4+muV7XSd///uL07021adMms4+i31WFCxc2n8d169a5AqlevXrmPa1+/PFHs78wZswYV8uWLV0DBw4MyDrpe1mPHZTuw1jfnT/88IP5jgAuBoI2OfBjsHjxYteqVasuOK1cudJrx8gfateubQ7+U3+x/PTTT+bHNRAqVarkmjRpkssp2rdv73r33XfTXK/X6W3qzTffdF166aUBWDuX2dnQH/j69eubnf1rr73W9cEHH7gSExMDsj7x8fGujh07ulq3bm3eUy+++GJA1sPpNOB26623mu3l+dnT7wE9cAsEDT7+9ttv5rIeGGnQTe3atct8N/nbuHHjMp0CRbfFvn37zOUbbrjBvS779+8PyHayDB8+3HynL1q0yKzHnDlzXE899ZQJOr/99tsBWadevXql+x2g1+lnIBCc9j5XHTp0cD300EPmsuf3wZo1a1yVK1cOyDo5cf9Al6vfkanpa+jPA2yn77doQEbfO6lpsKZOnTrm8pdffmlOPgXrZ0/XRYMgGtC2LluTBpT0ev1ODQQnfm960v1L3c+87rrrzIlDfb/pfmh6wa+LrWDBgq49e/aYy2PHjnX17t3bXN64cWPAAiT6XrbWyfO7U//VoBJwMRC0yaYqVaq4jh8/nuX76xef7vj7S758+cwZ/9RfLDt37jS3BUKhQoX8Gri6EN0Ouj1S0+usnQzdCQnkwZplxowZ5gdBg4V6JuTxxx83Z98vJj1rlnrSHUPdGdQzn57X41/FihVzn2X0/OzpD32g3ktt2rRxH6T17dvX1bVrV/Na9u/f33w34W8aINUzn/pdrTv33377rbl+w4YNAT2Lpp8564BWv0d//fVXd1D56quvDsg66Q61tR6e9Dq9LRCc+D7X95EeuKb+PtDf50Dt5Dtx/0C/G7dt25bmes1806zFQHHifosG11LTTATrtdPX1t+/NU767GlGi2aN6f6Sfp97ZrosXLjQ/b0eCE783kyPZlRr5o+136n/ambgoUOH/LYOGmTbunWruXz55ZebDPhA70tVrVrVBEVTf3dq9o0Gw4GLgaBNHqdfHkuWLEnzxaIH/4EafqDpuq+88orLKXTo0cMPP5zmer1Oh2yo77//3lWuXLkArJ3LdeTIEdezzz5rXkvdab3lllvM2Ss9UNOdoE6dOvllCKD+a02ef1uX/Tk8IzfQM3vWjobnZ++bb75xlSpVKiDrtHTpUnP2zNo51Owxfe30DLamigfCiRMnzBCkRx55xPXnn3+6z6D9/vvvrkB5//33zdlFfU97fr6eeeYZcxASKLozb2UAlS9f3p22rkHlQO3oawbClClT0lyv1+ltgeDE97kG2TV1PvX3wRdffGEypQLBifsHmt2q2W3nzp1zX3f27FlznWYrBYrT9lv04FW/izwzH/SyXnfFFVeYv/Wg0tqHCebPnma6JyQkuJzEid+bnnSf96677jIBE/1+0mGc+jvz9ddfm8/hZZdd5rd10WyfLl26uJ588knzu2ztG3z++edm/z0QdF9AM9q+++47E9DV/TrNdtXvef3+BC4GukflcdpVZ8SIEaZopQbptCjcf/7zH5k4caIpFBcI2tXg8ccfNy2i69evbwp8err33nv9uj5aHO+GG26Qzz77TC677DJz3YYNG2T79u2maKT6/vvv5aabbvLremmB1rlz58rnn39uCq4NHz5cbr31VlN419K6dWupXbv2RV0PLVAJe8VstaDna6+9Zv7WAoRxcXGmoPU111wTkE3apUsXr8+hvse14KEvBRJzkha17tixoxQuXFj27t0rw4YNM8VZ9b2vrZrffPNNCQQtwKhFD7V4ZcOGDd3Xd+jQwXRGCRQtdKifR+26pcWR33vvPWnevLn897//9fpe8Kfx48fL0KFDTcHtFi1amOvWrVtnikdqschAcNr73Gozrl1s9DVTuh76Hn/44Yeld+/eAVknJ+4f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g7XNd+3alel7U+9z5swZmT9/vntZev/MXp+XX35Z6tata56bPscRI0aYz4AnfX76nty2bZtcddVVZj3Lly8vkydPznRbe67X3XffLe+//77UqVPHvFdbtWolP/30k7n91VdflRo1apjXUJeVeh2z8jnS56nvVWt5nu9Zq27NlClTTDaUvob6OPp8Ute00YCevi90PfT9b9FtX7BgQbnpppuy9JyBvCA80CsAAAAApKZDZapWrSoTJ06UH374wQw7KlWqlDz77LPu+zz99NPy+OOPm/sOHTpUjh07Ji+++KJceeWVsmnTJncGhx6k6kG1ZsJo4EFrz+j9fv/9d3Ob5YsvvpDevXubA1pd7p9//mkOyCtUqJDjL1D//v3lq6++8jogTU2fh9aw0SEjmrmj8/iTBil0O+i2bd68ucTGxposIn09rEyirVu3yuWXX26CB4888og5oH7vvfekR48e8sEHH0jPnj3TfWw9aH/zzTdNUOyVV16R6OhoadCgQYbrogfzep+RI0eaf3XI2BNPPGHW6bnnnjP3efTRR02mk76uzz//vLlO71u7dm158sknzf1vv/12ueKKK8xtrVu3Nv/qY1199dUm+KeBpNDQUJk7d660b9/eBCr0ufvy3tTXzNpmujylAYrMtrMGxzp27Gjeozt27DDb5PvvvzeBI62PZDlx4oQJLvXq1cusx6JFi+Thhx+W+vXrm+dwIfp8NKCmQSGlz6Fbt24yevRoEzjSmky6DA0EDR482GwbS1Y+R3fccYcZiqaBPd0O6dFte/78ebNtNGijwT4dJudJt6duAw0S6TLuvfdecx8NChUqVMisKxA0XAAAAIBDjB07VqMYrsGDB3td37NnT1fx4sXdf+/du9cVFhbmevrpp73u99NPP7nCw8O9rj979mya5UycONEVEhLi2rdvn/u6Ro0aucqWLes6efKk+7ovvvjCrE/lypV9eh4jRoww82Wkbdu2md7uSe+nj5fedkpt7ty55vo9e/Z4LUsni96m99H7ZqZhw4aua6+9NtP7dOjQwVW/fn3X+fPn3delpKS4Wrdu7apZs6b7upUrV5pl6r+pn8OxY8dcF5Lea3jHHXe4ChQo4LVsXd/0Xqvvv/8+3ees66rr2aVLF3PZc3lVq1Z1derUyef3pipYsKBrwIABF3x9jh496oqMjHR17tzZlZyc7L7f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c+fOZUva9Ouvv5rsmnXr1snx48fdHbb279+fJmgzceJEGT9+PNsaAIAgQL4tAADIMVrPZtmyZfLqq6/K6dOnzXWHDh0yQ36Qseuuu07++usvmT17tgnc6KQSEhLS3HfMmDFy6tQp93TgwAE2LQAg19AixNmdggmZNgAAIEfs27dPunbtarJDdPhOp06dpFChQqY4sf49a9YstnQ6/vzzT9mxY4cJ2FxxxRXmutWrV2e4raKioswEAEBuFPrPf9mZP5gE17MFAAAXzX333SfNmjWTEydOSP78+d3Xa0FdLVCM9BUtWtR0jHrttddk165dsmLFClOUGAAAgEwbAACQI7755hv59ttvJTIy0uv6KlWqyMGDB9nKGdDuUO+8847ce++9pn7NpZdeKjNmzJB27dqxzQAAeU52hziFMDwKAADAd1o8Nzk5Oc31v//+uxkmhYx17NjRdIry5HK52GQAgDyHoI1vyLQBAAA5onPnzjJ9+nQzzMfaKdMCxGPHjpVrrrmGrXyRFYqIkUKR0T7PdybJfpHoFFfaIF1W5AvLZ3uZiSmJtucNDbFfGeB80lnb86a4UuwtM9n+MpNtvjbZfX2SXUm2541PPm9rvsSUtAW7syo5xf762l9q9jIF4pPP2Zpvavu7bC8zO+/FyFDv7Et/vCeUS+wFvkvmL2V7mRGhEbbmC7c5X24VKiFmys78wYSgDQAAyBFTp06VLl26SJ06deT8+fPSr18/08q6RIkS8p///IetDAAA4COCNgAAIEdUqFBBtmzZYuqz/PjjjybLZsiQIXLLLbd4FSYGAADBi+FRvqF7FAAAyDHh4eFy6623yuTJk+Xll1+WoUOH+hyw0QK8999/v99fFS2YrMO7ckqgngcAAE4WGhKS7cmOmTNnmt/6fPnySYsWLWT9+vUZ3nfr1q3Su3dvc38NMmW0f3Chx9TM4xEjRpgukdHR0eYx//jjD5/Wm0wbAACQI958881Mb+/fvz9bGgAA+N27774rI0eOlFmzZpngigZhdEj3jh07pFSptHWMzp49K9WqVZMbbrhBHnjgAduPqfN+8skn8v7770vhwoXl7rvvll69esmaNWuyvO4EbQAAQI647777vP5OTEw0Oz3aArxAgQIEbQAAgIT8859dITbmnTZtmgwbNkwGDRpk/tZAiwZT5syZI4888kia+1922WVmUund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F9oNN9zg9knr1q3da27dutW9zwEDBlh2qVChQvC9ZOavv/7Ktn2Umt7n1KlT3fG544473DmyZMkSq1q1qtWsWdOym87hW265xd54443g9iUkJNiVV15pzz33XDBglp0+/PDDsPO1n4oXL2716tWzY489Ntv38f33329DhgxJ854UHHzsscfs3nvvzfZzwtvmunXrWm6bM2eOvfzyy+5c0jml80fHWfv21FNPzfXtQcFE0AYAACAGlC9fPssXN6Ln/vTTT2EvZHRR8dJLL9nPP/9sX3/9tdWuXduefvppd6Ghi/j0rFmzxmbOnGmbN2+25OTkFI+lvhjL6nYrG6Zfv342cuRIi49PW9mvC+lLLrnE+vfvH9FFkDJpFLjR9ipoIrNnz7Zu3brZfffdl+b5S5cudVkr3s/pyewYKFOlS5cuLkPh4MGDdtZZZ7n1P/LII+537ff03Hrrre4YzJgxw/27cOFC27Ztm91+++32+OOPp7vcPffcY3fffbc7rqmDVJlRsOKpp55yP+uiU/tb7//f//63O6ZZDdocOHAgTUZG6qChzjGP3tfo0aPtnHPOsbZt27p5Ohc/++wzGzFiRLbvI893331nnTt3tnLlytn69evt2muvdfvs3Xffdcfs9ddfT3dZv58bBQG/+uorF0hp3769m6eA4sCBA912v/jiixlus5/PXY8ePVIEXDzePP2rz9P777/vAifZtY9HjRrlAoCpgzb79u1zj6Xe3uw4J0RBqI4dO9rVV19tF110kQtMZdW0adNcMNX7+/L888/b+PHjXbaZfk69fzz6jPTp08cuv/xy95nR51t27txpDz30kH3yySdZ3gYUcgEAAAAUeHFxcYF33303MGvWrEynmTNnBkqUKBFYt25dmtd54YUXApUrVw6MHj06xXMmTpwY6NSpU7rrHzduXCAhISFQtWrVQPPmzQMtWrQITi1btkx3uUmTJgWOPvrowPDhwwMffvihm/RzrVq1Ai+//LLbjvLlywcefPDBsMu/9957ge7duweKFi0aqF+/fmDMmDGB3377LdP9deTIkUDPnj0DHTt2DBw4cCDw5ZdfBkqXLh14+umnAzlJ23rFFVcEDh486Nbn7V8dk3r16mW4bKVKlQLLly93P5ctWzbw448/up9nzJjh9nN69JjWlZiYGGjQoIE7HqFTRnQO/PLLL+7niy++OHDfffe5nzds2OAey8jevXsDN910U6BKlSqB+Pj4NFNGLrzwwsBzzz2XZr7maR9m9z7ynHnmmYE77rjD/Rx6fObNmxeoXbt2usv5/dx426zjn5rOSb1mRvx+7qZPnx5o3bq1+3fXrl1u0s9t27YNfPzxx4G5c+cGTjjhhED//v2zdR/r79TmzZvTzNeymb1Xv+eELF26NDBw4EB3LpYrVy5w3XXXBRYsWBDIiiZNmrh9It999537HA0bNizQpk2bQL9+/dJdTvtCf99Sn0tLlixxxwvIKoI2AAAAMaBOnTqBrVu3Zvn5uiDThXdqjRs3doGQ1Bca33//vbtYS88xxxwTePjhhyPe7jPOOCPw9ttvp5mveXpMXn/99UDDhg0zfB1dCD7xxBOBpk2bBooUKRI4//zzA//+978Dhw4dSncZBU46d+4caNeunXuv4S4Is1vFihWDF7mh+/fnn3/ONAii4NV///tf93PdunXdRb2sXbs2w2UVaMloyoj25zPPPOPOFV2gz58/381ftGhRpheeN954ozufpk6d6rZvwoQJgQceeMAF6f75z39muGypUqUCa9asSTNf8/RYdu8jj96jnpv6+Kxfv95drKfH7+dGtF0rV65MM3/FihWBkiVLZris38+dPv8KRKWmYM3xxx/vfv7iiy9c8DQ79rGWqVChggvWeT97k/a55ut8yYlzIpT+HujvQrdu3VygV/tBfzfCBZJC16vPp4wcOTLQq1cv9/PixYsz/AxoX3jLhZ4T+jejcwlIjfIoAACAGKCSjEisWLEi3ddp2bJlmvnqL6PeG+nZvn27XXzxxRap+fPnhy0J0jao9EFUlqDSlIyoaavKTDSpD4h6kaj8oHLlyq4c46677rK1a9emWU6lUL1797YrrrjCTjvtNFceI82aNbOcoPKVcD0/1BjZK9NKjxoJL1++3JWkqLfMo48+6nr+jBs3LsN+HSot80vlKuq7M2jQIDvzzDODZSmff/552PMk1H/+8x9XTtSpUye76qqrrEOHDq5MRWVDkydPdmUj6alUqZJ98MEHruQmlObpsezeR6Hnebg+SyolzKgxsN/PjWif6hhpX3llO+rxonIhb39n9+dOPVbC9bTSPPV/kfr167veRdmxj1XmpIQBlTHqfan8zKNl69Spk+l79XtOhCpSpIjr0aS+VS+88IINGzbM9dhR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Dx7sLq51oa8LbQUIvIvqhQsXun+nT59umzZtsnfffdeGDBniAjNdunRx8zQpMKDAyznnnOOCJHPmzLF58+ZZ6dKl3fOSkpKC65w5c6YLDOlfBX9USqQpNHii4I8eV0DihRdecIGcUBdffLGb9+mnn9rixYvtxBNPtDPPPNMFAORf//qXC5Q89NBD7r0p0KLXyYiCNW3btrVrr702+L5q1aplv/32m5133nl28sknu6CEMkPU/2X06NFhX0f7QsEJBTK819E+896btufDDz+0r7/+2gKBgHvt0KCVR/ugQ4cO1qRJE7cfFDBSwOb111+3l156yX744QcbNGiQXXHFFWmCHvfcc4898cQTbl1FihSx/v37Z/je586d64I86fnyyy9dgOXBBx+0oUOHZnoM1IOoc+fONnHixBSvo9+1D3SeSbFixVyfIZ0vAAqoAAAAAIBcsWXLloC+gn///ffu959//tn9vnTp0hTP69u3b6B79+4p5r3xxhuBhg0bBpKTk4PzDh48GChRokTgs88+Cy5Xu3btwOHDh4PPufjiiwOXXnqp+3n16tVufQsXLgw+vmrVKjfvqaeecr/PmTMnULZs2cCBAwdSrP+4444LvPzyy+7ntm3bBm688cYUj7du3TrQvHnzDN9/x44dA7feemuKeXfffXea9/X8888HSpcuHThy5EjY15k4cWKgXLlyKeb99NNP7n3MmzcvOG/r1q1u//zrX/9KsdyPP/4YqFWrVmDgwIHB9er9lixZMjB//vwUr3v11VcHevfu7X6eOXOmW8f06dODj3/88cdu3v79+8Nu6/bt293js2fPDnuM3333Xfdep0yZEnwsK8fg7bffDlSoUCH4nMWLFwfi4uLcORWqZ8+egX79+oXdNgD5H5k2AAAAQA5RaU7v3r2tbt26LjNEGRKyYcOGiF9LWShr1651mTbKsNGkEimVJYWWXJ1wwgmWkJAQ/F1ZMF4mzapVq1xmyEknnRR8vFGjRima+mo9e/bscaVV3no0/fzzz8H16HVat26dYvuUReNRZkfosuFKsDx6LS2rsiOPer9oG3799dcs7x/vvYVul95Dw4YN3WOe/fv3uwybCy+8MFiqJdq3+/btcxkvoduuzJvQ/SvNmjVLsX8ldbZS6PqkePHiaR5bsGCBy6h544037NJLL43oGKgMTsf5vffec78rm+r0008PnmMelXnpfQEomIrk9QYAAAAAsUp9TNRjZPz48VajRg1XFqVynNBypqzSRbyCLeECIOp74ilatGiKxxSU8MqxsroeBSK8Pjqhsjpik0qBQkfEUu+b/EJlUCot+uijj+yOO+6wmjVrBt+3fPzxx8F5ocuECt3HXtAnvX2swIueo347qR133HHu8QkTJtj5558ffN2sHAOVPql/j0qiFIB68803XRAqNZVTaT0ACiaCNgAAAEAO2LZtm2tQq4CNMju83iahdOEtR44cSTM/9Tz1NHn77bftqKOOclk7fiirRg1+1SNFPWRE26imt6Hr+eOPP1zWSuqsDU/jxo1dloiCBp5vvvkmRXZHvXr10iwX7n3ptf7973+7/jNeAET9epRRdPTRR4ddf3qvo/em7VLfm9BjoOGvPer3osyWyy67zGWmKDCigJqeo+CMsqA6duxo2UXbqtdeuXKlnX322Skeq1y5sutjpAbU6mOkXkEK3GTlGIgaFSsIqH5Ceu8K3qS2YsUKu+iii7Lt/QDIXZRHAQAAADlAIxgpi2LcuHGu9EbNZtWUOJQCMApwaJSpP//8042IJLpQ/+6771zAYevWra6R7uWXX+4u8jVilMqPVCqjgMPAgQOzXEakUiE1Lr7++utdcEPBG134axs8ykJRuZLKbz7//HM3UtH8+fNd811vtKJbb73VZYcoy+Onn36ykSNHusa9mdH70nr1mnpfyk658cYbXVPgW265xX788Uc3apZeT/vKa6gb7nWUjaLmznodlf/Ur1/f7Rs1OlZwTCVGaiKsrBnND6WyImUsaXQojcqkAImCRGporObDauCsMqQlS5bYc889536PhhpIpw7YhZ4DOjf03lVKp+BLVo6BF6hq06aNa16sZUOPo2g5NXrW6wEomAjaAAAAADnxRTs+3g31rMCIsiEUDHjsscdSPEeZFM8++6y9/PLLLtvDCy4o8KAAi8qMVPqkzBMNLz179mw75phjXEaFLti9obYjybxRoEXrUjaJXue6665zgQOPsl0++eQTO+2009zQ2g0aNLB//OMf9ssvvwTLnNR/ZcSIEXbnnXe6ki09NmDAgEzXraCIAibKPNH7UlaLgipan0bSUhDlhhtucO9r+PDh6b6OMmn0PG2HXufRRx8Nvjdtj4ZWV9BD2Tt67dQlY96+f+utt1wPIAVu1JPmgQcecO9Lo0hp/yrApXIpb2h2v/R+tB1eUC61atWqucDN999/74JzCmZldgxCX1vlduFGsNL7U3aPSvQAFExx6kac1xsBAAAAALFMDYdV9jRs2LBsfV0Fmt555x2XmRVKgRxlH6nXjRo7AyiYyLQBAAAAgBymLCuNAJVdVB6mfjVjx451pWWpKYvp7rvvJmADFHBk2gAAAABAAdOvXz9X/qS+N8qmCR3mHUDsIGgDAAAAAACQD1EeBQAAAAAAkA8RtAEAAAAAAMiHCNoAAAAAAADkQwRtAAAAAAAA8iGCNgAAAAAAAPkQQRsAAAAAAIB8iKANAAAAAABAPkTQBgAAAAAAIB8iaAMAAAAAAGD5z/8BQhrUk3UXmucAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1250x750 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def show_attention(i):\n",
    "    n = int((X_te[i] != 0).sum())\n",
    "    tokens = [vocab[t] for t in X_te[i, :n]]\n",
    "    scores = attn_model.predict(X_te[i:i + 1], verbose=0)[0][:, :n, :n]   # (heads, n, n)\n",
    "    p = model.predict(X_te[i:i + 1], verbose=0)[0]\n",
    "    print(\"text      :\", test_df.loc[i, \"input_text\"])\n",
    "    print(\"true label:\", y_test_text[i], \"| predicted:\", classes[p.argmax()], f\"({p.max():.2f})\")\n",
    "    print(f\"uniform attention would be 1/{n} = {1 / n:.3f}\")\n",
    "\n",
    "    fig, ax = plt.subplots(2, 1, figsize=(min(0.42 * n + 2, 16), 7.5),\n",
    "                           gridspec_kw={\"height_ratios\": [1, 3.2]})\n",
    "    im0 = ax[0].imshow(scores[:, 0, :], cmap=\"Greens\", aspect=\"auto\")\n",
    "    ax[0].set_yticks(range(scores.shape[0]), [f\"head {h + 1}\" for h in range(scores.shape[0])])\n",
    "    ax[0].set_xticks(range(n), tokens, rotation=90)\n",
    "    ax[0].set_title(\"[CLS] attention per head\")\n",
    "    fig.colorbar(im0, ax=ax[0])\n",
    "    im1 = ax[1].imshow(scores[0], cmap=\"Greens\")\n",
    "    ax[1].set_xticks(range(n), tokens, rotation=90)\n",
    "    ax[1].set_yticks(range(n), tokens)\n",
    "    ax[1].set_xlabel(\"attended-to token (key)\"); ax[1].set_ylabel(\"query token\")\n",
    "    ax[1].set_title(\"head 1: full self-attention matrix\")\n",
    "    fig.colorbar(im1, ax=ax[1])\n",
    "    plt.tight_layout(); plt.show()\n",
    "\n",
    "if hist is not None:\n",
    "    show_attention(12)\n",
    "else:\n",
    "    print(\"Skipped (no Keras).\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e3ea0c19",
   "metadata": {},
   "source": [
    "權重大致**只比平均分配高一點**：小資料、只有一層的模型，注意力不會像教科書插圖那樣集中在一兩個字。即使如此，`[CLS]` 通常還是會多看幾眼帶有診斷線索的字（例如 sweating、chills）。\n",
    "\n",
    "要記得：注意力權重**不等於**模型「為什麼這樣判斷」的完整解釋。後面還有前饋網路與分類頭，權重高只代表那個字的資訊被多混進來一些。換成第 55 句（`show_attention(55)`）或其他句子看看。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2c1262da",
   "metadata": {},
   "source": [
    "## 8. 錯誤分析：哪些診斷最常被搞混？\n",
    "把兩個模型答錯的題目依「真實診斷 → 預測診斷」數一數。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "20d1bba5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-06T13:54:59.837275Z",
     "iopub.status.busy": "2026-10-06T13:54:59.837027Z",
     "iopub.status.idle": "2026-10-06T13:54:59.854671Z",
     "shell.execute_reply": "2026-10-06T13:54:59.851117Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TF-IDF + LR errors: 20\n",
      "true                  pred                           \n",
      "peptic ulcer disease  gastroesophageal reflux disease    3\n",
      "dengue                typhoid                            2\n",
      "allergy               common cold                        1\n",
      "jaundice              urinary tract infection            1\n",
      "typhoid               dengue                             1\n",
      "pneumonia             bronchial asthma                   1\n",
      "Name: count, dtype: int64\n",
      "\n",
      "mini Transformer errors: 15\n",
      "true                             pred                   \n",
      "dengue                           malaria                    1\n",
      "                                 typhoid                    1\n",
      "diabetes                         pneumonia                  1\n",
      "                                 urinary tract infection    1\n",
      "gastroesophageal reflux disease  allergy                    1\n",
      "                                 peptic ulcer disease       1\n",
      "Name: count, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "def confused_pairs(pred, top=6):\n",
    "    wrong = pd.DataFrame({\"true\": y_test_text.to_numpy(), \"pred\": pred})\n",
    "    wrong = wrong[wrong[\"true\"] != wrong[\"pred\"]]\n",
    "    return wrong.value_counts().head(top)\n",
    "\n",
    "print(\"TF-IDF + LR errors:\", int((pred_base != y_test_text).sum()))\n",
    "print(confused_pairs(pred_base))\n",
    "if hist is not None:\n",
    "    print(\"\\nmini Transformer errors:\", int((pred_tf != y_test_text.to_numpy()).sum()))\n",
    "    print(confused_pairs(pred_tf))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4484995b",
   "metadata": {},
   "source": [
    "錯誤常落在臨床上本來就需要鑑別的組合，例如發燒類的感染症、或同樣以消化道症狀表現的疾病。光靠一句主訴分不出來是合理的——真實診斷還需要病史、理學檢查與檢驗。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f84f32ad",
   "metadata": {},
   "source": [
    "## 9. 用自己寫的句子試試\n",
    "輸入一段英文症狀描述，看兩個模型的前三名預測。注意：這是教學模型，對訓練資料以外的寫法很容易出錯。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "4ed8b666",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-06T13:54:59.859252Z",
     "iopub.status.busy": "2026-10-06T13:54:59.858999Z",
     "iopub.status.idle": "2026-10-06T13:55:00.073804Z",
     "shell.execute_reply": "2026-10-06T13:55:00.071995Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TF-IDF + LR top-3:\n",
      "malaria    0.185\n",
      "dengue     0.070\n",
      "typhoid    0.052\n",
      "dtype: float64\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "mini Transformer top-3:\n",
      "malaria      0.906\n",
      "pneumonia    0.076\n",
      "impetigo     0.006\n",
      "dtype: float32\n"
     ]
    }
   ],
   "source": [
    "my_text = \"I have had a high fever with chills and sweating every other day, and my muscles ache.\"\n",
    "\n",
    "top3_base = pd.Series(baseline.predict_proba([my_text])[0], index=baseline.classes_).nlargest(3)\n",
    "print(\"TF-IDF + LR top-3:\"); print(top3_base.round(3))\n",
    "if hist is not None:\n",
    "    p = model.predict(encode([my_text]), verbose=0)[0]\n",
    "    print(\"\\nmini Transformer top-3:\"); print(pd.Series(p, index=classes).nlargest(3).round(3))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "086b1af4",
   "metadata": {},
   "source": [
    "softmax 輸出的「0.9」只代表模型在這 22 類裡的相對偏好，不是校準過的機率；就算你輸入一句和 22 類都無關的話，它也一定會選出一個答案。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "98caaf7e",
   "metadata": {},
   "source": [
    "## 10. 動手試試\n",
    "1. 在第 5 節把 `build_model()` 改成 `build_model(num_heads=4)` 或 `build_model(dim=32)`，準確率與注意力圖怎麼變？\n",
    "2. 改成 `build_model(use_position=False)`（拿掉位置嵌入，模型就看不到字序），準確率掉多少？想想為什麼在這份資料上可能差不多。\n",
    "3. 把第 6 節 bootstrap 的次數改成 500 或 5,000，信賴區間穩不穩定？再把 `keras.utils.set_random_seed` 的種子換成 1、7，看看「同一個模型、只換隨機種子」準確率會跳動多少——和兩個模型的差距相比如何？"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
