回 AI 學習與考證地圖
Interactive Python Learning

Python 互動宇宙

告別死背語法與死背公式!在這裡,我們用生動的動畫與視覺化比喻,帶你「看見」Python 程式碼在記憶體裡發生什麼事、iPAS 中級的程式題到底在寫什麼,以及會考的那些數學實際上長什麼樣子。

🔬 iPAS AI 奈米級拆解程式題解說

// 一題拆到每一個字:Python 基本功 → 框架 → 逐行解剖 → 互動實驗 → 動畫影片
🎲
NEW
SciPy 卜瓦松分佈 動畫影片
📝 114 年第二次・中級科目二・第 42 題

第 42 題 · 卜瓦松分佈 pmf 與 cdf

生產線平均每小時 5 個瑕疵品,剛好 5 個的機率是多少?逐行拆開 scipy.stats.poisson:poisson 是物件不是函式、變數為什麼不能叫 lambda、numpy 其實沒用到;把 pmf、cdf、sf 和「剛好、以下、少於、超過、以上」一一對應,實測 0.1755、0.4405、0.9863、0.0318,再用 10 萬小時的模擬看平均發生率不固定時會怎樣。附 3 支動畫影片和互動實驗。

📊
NEW
pandas statsmodels 動畫影片
📝 114 年第二次・中級科目二・第 48~50 題

第 48~50 題 · 行銷預算迴歸

200 筆 YouTube、Facebook、報紙廣告預算和銷售額:describe() 的 count、mean、四分位數怎麼讀;isna 和 isnull 是同一個、isNaN 不存在;LinearRegression().fit(X, y) 和 sm.OLS(y, X2) 的順序剛好相反,寫反時一個馬上出錯、一個要到 summary() 才出錯;p 值 0.914 為什麼不顯著。用公開資料重現考卷每一個數字。附 3 支動畫影片和互動實驗。

🧮
NumPy MSE Memory
📝 114 年第二次・中級科目三・第 38 題

記憶體視覺化:MSE 計算篇

透視 NumPy 在計算 MSE(均方誤差)時的向量化操作與底層記憶體運作機制,揭開機器學習評估指標的微觀世界。

🎤
NEW
NumPy Dropout 動畫影片
📝 114 年第二次・中級科目三・第 39 題

第 39 題 · 反轉 Dropout

八個人的合唱團,每次排練每人抽一次籤:np.random.binomial 交出 0/1 遮罩,乘上輸入再除以 p。逐行拆開這是哪一種正則化:種子 42 的遮罩長什麼樣、同一份 x 抽 10 萬次再平均為什麼回到原值、不除以 p 平均只剩 0.8 倍、預測模式為什麼原封不動交回同一個物件,再和 L1、L2、Batch Normalization、PyTorch 的 nn.Dropout 對照。附 3 支動畫影片和互動實驗。

📦
OOP NumPy Memory
📝 114 年第二次・中級科目三・第 40 題

記憶體視覺化:變數篇

用「倉庫 + 紙條」的比喻,一眼看懂 Python 裡 Class、Instance 和 Variable 的愛恨情仇。

程式是 114 年第二次 AI 應用規劃師-中級-第三科:機器學習技術與應用 40題

🧩
NumPy Array Memory
📝 114 年第二次・中級科目三・第 41 題

記憶體視覺化:陣列操作篇

探索更多 NumPy 的記憶體操作與進階陣列變化機制。

程式是 114 年第二次 AI 應用規劃師-中級-第三科:機器學習技術與應用 41題

📊
NEW
pandas 補值 動畫影片
📝 115 年第一次・中級科目二・第 41 題

第 41 題 · pandas 平均數、中位數與補值

只有 3 行的 pandas 程式,一個字一個字拆:read_csv 怎麼照 DataFrame 設計圖做出表格、第 4 行的方括號和點各在做什麼、describe 的 8 個數字,以及收入右偏時為什麼要用中位數補值。再揭開一個考卷沒說的陷阱:選項那行 fillna(inplace=True) 在 pandas 3 根本補不進 df。附 3 支動畫影片、補值模擬器,和可以下載資料直接跑的完整程式。

🎯
NEW
scikit-learn 隨機森林 動畫影片
📝 115 年第一次・中級科目二・第 42~44 題

第 42~44 題 · 標籤編碼、準確率陷阱與決策門檻

第 41 題的題組後三題,考卷沒印程式,這頁把情境寫成一支 scikit-learn 程式逐行拆開。A、B、C 編成 1、2、3,線性迴歸只能畫一條直線,把 C 區高估 62;隨機森林只問「≤ 1.5?≤ 2.5?」,三區全中。2000 人只有 1 個外掛,全部猜正常就有 99.95% 準確率,考卷那張全是 1.00 的報告少了 support。作弊零容忍時,predict_proba 的門檻從 0.5 降到 0.0037,30 位外掛才全部抓到。附 3 支動畫影片和 3 個互動實驗。

🧺
NEW
pandas groupby 動畫影片
📝 115 年第一次・中級科目二・第 45 題

第 45 題 · groupby、sum 與 nlargest

「總貢獻營收最高的前 3 名客戶」,四個選項竟然算出四種不同的前 3 名:單筆最大、編號最前、買最多次,只有 groupby → sum → nlargest 才是總貢獻。用 20 張收據分籃子,看懂 groupby 交出的是一個「還沒加總」的物件、max 和 sum 差在哪、head 為什麼不等於前 3 名,以及 nlargest 為什麼比排序快。附 3 支動畫影片和收據分籃子互動實驗。

🧬
NEW
Keras MLP 動畫影片
📝 115 年第一次・中級科目三・第 40 題

第 40 題 · Keras 手寫數字 MLP

只有 8 行的 Keras 程式,一個字一個字拆:import 進來的是類別還是函式、物件和方法怎麼分、Dense 的每個參數在控制什麼、第一層為什麼有 50,240 個參數,以及 softmax 為什麼要配 categorical_crossentropy。附 3 支動畫影片、輸出層互動實驗室,和可以貼進 Colab 直接跑的完整程式。

🪞
NEW
PyTorch 資料增強 動畫影片
📝 115 年第一次・中級科目三・第 41 題

第 41 題 · torchvision 資料增強與鏡像字母

只有 7 行的 torchvision 程式,一個字一個字拆:Compose 怎麼把四台「機器」串成一條生產線、__init__、self、__call__ 各負責什麼,以及 RandomHorizontalFlip 為什麼會把 b 翻成 d、標籤卻還寫著 b,驗證損失還一路下降把問題藏起來。附 3 支動畫影片、資料增強抽籤機,和不用下載資料集就能跑的完整程式。

🏭
NEW
PyTorch 遷移學習 動畫影片
📝 115 年第一次・中級科目三・第 42 題

第 42 題 · ResNet 凍結權重與特徵萃取

只有 8 行的 PyTorch 程式,一個字一個字拆:resnet50 為什麼是函式、nn.Linear 和 Adam 為什麼是類別、for 迴圈怎麼把 161 個參數的 requires_grad 全部關掉,以及 model.fc 換上新零件後,為什麼只剩 4,098 個數字在學。再真的訓練一步,親眼看到前面的權重一個都沒變。附 3 支動畫影片、ResNet-50 凍結控制台,和可以貼進 Colab 直接跑的完整程式。

📈
NEW
Keras 過擬合 動畫影片
📝 115 年第一次・中級科目三・第 48 題

第 48 題 · 訓練曲線怎麼讀:過擬合的訊號

考卷只給了一張訓練曲線圖:訓練 0.81、驗證 0.72。先把沒印出來的 compile、fit、plt.plot 補齊,一層層拆開 fit 交回的 History 物件、history.history 字典和 list 索引(為什麼圖上的 6 是第 7 輪)。再把四個選項的情況各真的訓練一次 CIFAR-10,親眼看學習率太低、批次太大、低度擬合、過擬合的曲線各長什麼樣子。附 3 支動畫影片和學習曲線判讀器。

🔀
NEW
PyTorch ResNet 動畫影片
📝 115 年第一次・中級科目三・第 49 題

第 49 題 · ResNet 殘差連接:超過 50 層的捷徑

題目沒有程式,只問「超過 50 層又怕梯度消失,選哪種架構」。答案 ResNet 的關鍵,在 torchvision 原始碼裡只有一行 out += identity:逐行拆開真正的 Bottleneck.forward,看懂 identity = x 為什麼不是複製、加法為什麼能讓梯度跨層直達。再實測 50 層網路有沒有捷徑:第 1 層的梯度從 10 的負 21 次方變成 0.075。附 3 支動畫影片和梯度實驗室。

💻 中級程式題深度解析

// iPAS 中級科目二、三的程式題,一行一行拆到完全懂
🔗
NEW
科目三 scikit-learn 逐行解析

Pipeline × 交叉驗證

StandardScaler → PCA → LogisticRegression 串成一條 Pipeline 再交叉驗證,第 1 行走到第 17 行一行都不跳。可切「零程式基礎/有程式底子」兩種模式,57 個名詞點開就有三層漸進式說明。附真實資料集檢視器、5 折切分檢視器與 6 個互動實驗室,分數全是實跑出來的。

🎯
NEW
科目三 混淆矩陣 評估指標

混淆矩陣 × Recall

給一個 2×2 的 confusion_matrix 求正類的 Recall。這題最狠的地方是四個選項全都是真實存在的指標——0.82 是 Precision、0.95 是 NPV、0.10 是 FPR,只有 0.90 才是 Recall。逐行拆解 cm.ravel() 與分母該怎麼選,附混淆矩陣計算機、判定門檻連動實驗室與類別不平衡陷阱示範。

⚖️
NEW
科目三 類別不平衡 PR-AUC

accuracy 0.99 的陷阱

正類只佔 1% 的詐欺資料,全預測負類的基準模型 accuracy 就有 0.99——但它一筆詐欺都沒抓到。逐行拆解那五行程式,再把 PR-AUC vs ROC-AUC、class_weight、重抽樣與依成本調門檻四種後續方案講清楚,順便揭穿「把驗證集正類複製到訓練集」為什麼是雙重洩漏。四個互動實驗室,數字全是實跑出來的。

🎛️
NEW
科目三 超參數搜尋 交叉驗證

GridSearchCV × fit 次數

param_grid 開出 3 × 4 × 2 個組合、cv=5、refit=False——到底 fit 了幾次?兩個乘法一步一步拆:組合數怎麼連乘、折數怎麼再乘上去、refit 什麼時候要加一。附組合檢視器、五折之旅動畫、refit 開關與搜尋成本計算機四個互動實驗室,實跑彩蛋:24 個組合其實只有 12 種模型。

🏆
NEW
科目三 模型解釋 隨機森林

feature_importances_ 怎麼讀

重要性最高的特徵是「原因」嗎?0 分就是永遠沒用?它是相關係數嗎?三大誤讀全部用實跑反例拆掉:冰淇淋因果模擬(重要性 0.609、介入後真實 y 不變)、常數欄位恰好 0 分、分身攤分實驗。順便把 zip、dict、sorted、lambda 那兩行連環呼叫一次講懂。

✂️
NEW
科目三 過擬合 超參數

train 1.00、val 0.72 怎麼救

訓練滿分、驗證掉三成——四個選項全部實跑對照:只加樹 val 卡在平台、用 training accuracy 選參遇到 12 組滿分並列、一路加深反而更糟;用 CV 限制 max_depth 與 min_samples_leaf 才讓 val 從 0.722 升到 0.767、單棵樹從 9.3 層剪到 5 層。附複雜度曲線與選參陷阱實驗室。

📏
NEW
科目三 分群 特徵縮放

分群前為什麼要 StandardScaler

Wine 的 proline 一欄獨佔 99.77% 的變異——未縮放時兩瓶酒的距離 99% 由它決定,K-means 淪為「只看一欄」(ARI 0.371,跟只用 proline 分群完全等價);標準化後升到 0.897。附距離解剖器、178 點分群對照散點與 DBSCAN eps 之旅,順便講清楚群號為什麼不是標籤。

🌙
NEW
科目三 分群 DBSCAN

DBSCAN 的 -1 代表什麼

群號從 0 開始編,-1 是沒被任何密度群集收編的雜訊點。本站大海撈針,一字不差重現題目輸出 [ 0 0 -1 1 1 -1 0 1]——那兩個 -1 的圈內只有 3 點(含自己)。附核心/邊界/噪點判定器、月牙三視圖(DBSCAN ARI 0.955 vs K-means 0.479)、參數掃描(同一份資料噪點 0→300 筆)與 silhouette 陷阱。

⏳
NEW
科目三 深度學習 LSTM

LSTM 的輸入 shape 怎麼讀

(32, 24, 5)=(幾筆, 幾步, 幾個特徵)。TensorFlow 實跑四個選項的下場:C、D 當場報錯,B (24, 32, 5) 竟然不報錯——默默回 24 個預測。附軸拆解器、滑動視窗工廠(100 步切出 77 筆)、參數點算(1,408 = 4×(80+256+16))與 return_sequences 對照。

📅
NEW
科目三 時間序列 驗證

時間序列驗證為什麼不能 shuffle

上線是拿過去預測未來,驗證就得照演——過去訓練、未來驗證、不可洗牌。實跑對照最震撼:同一個隨機森林,隨機 K-fold 打 0.980、TimeSeriesSplit 揭穿它 -1.828(上線預演 -0.949 站在誠實這邊)。附摺疊檢視器(expanding/rolling/gap)、洩漏顯微鏡(未來混入訓練 94%~100%)與內插外推散點。

🚦
NEW
科目三 深度學習 損失函數

三類互斥怎麼配輸出層與 loss

幾類幾座位+softmax;整數配 sparse、one-hot 配 categorical。四個選項全部下水實跑:正解 0.970;sigmoid+BCE 硬吃三類竟然跑得動——但損失一路鑽到 -17.75(交叉熵不可能是負的,這是配方壞掉的警報)。附 softmax 手算機與三份任務配方總表。

✂️
NEW
科目三 深度學習 PyTorch

PyTorch 訓練迴圈的正確順序

歸零、前向、損失、反向、剪梯、更新——剪刀夾在梯度誕生與使用之間。三個錯序全部實跑:剪在反向前=剪空氣(clip 回傳 0.0)、剪在更新後=馬後炮(40 倍超速)、反向後歸零=冷凍庫(20 epoch 權重一動不動)。附梯度累積器(1×2×3× 親手按)與爆梯度救命現場。

⚖️
NEW
科目二 模型評估 不平衡

macro 與 weighted F1 差在哪

同一份預測、兩個 F1:macro 0.6465 誠實、weighted 0.9298 被 95% 的多數類拉高。拆段 30 秒填混淆矩陣、看破「0.2857 是 precision 不是 recall」的分母陷阱,再用門檻滑桿實跑:0.5 降到 0.05,recall 0.271→0.797、誤報 3→218 筆——多抓也多冤。

🔗
NEW
科目三 Pipeline 前處理

Pipeline 的 fit 與 predict 誰學誰用

三站生產線:補洞、縮放、模型。fit 依序在訓練資料「學」、predict 只「用」不再學——實跑對質:predict 前後四組參數 np.array_equal 全 True,X_test 的洞填訓練學到的 -0.12、不是自己的 -0.21。再實跑「重新 fit」的世界:單筆全零特徵人人同分 0.4965、含 NaN 單筆直接報錯。

📏
NEW
科目三 前處理 資料洩漏

標準化怎麼寫才不洩漏

四段 scaler 程式只有一段乾淨:fit_transform 給訓練、transform 給測試——尺在訓練集刻一次。實跑:無漂移四方同分 0.7767 看不出誰作弊;漂移 +2.5 一來,誠實的 B 掉到 0.5、兩把尺的 C 假報 0.7767;合併刻尺的 A 更陰——換一批測試集,模型係數跟著翻號。

📊
NEW
科目二 pandas 視覺化

melt 加 barplot 畫出什麼

寬表融成長表、月份×通路分組加總——六根條與 groupby sum 實跑一字不差(ax.patches 逐根對帳)。合計視角 1230/1220/1230 看似平穩,分通路才見 web 翻 1.73 倍、store 掉 42% 的大翻轉;再埋一刀版本考點:ci=None 已死,0.12 起請寫 errorbar=None。

🔍
NEW
科目二 pandas 合併

query 篩選加 inner merge 留下誰

9 筆訂單闖兩道關卡:金額 >= 1000 刷掉兩筆(999 差一元出局、1000 整整好過關)、inner 對名單再刷三筆——5000 元大單死於 inactive、3000 元死於查無此人。4 筆存活帶上 region;再實跑 left 的 NaN、C 的空集合、D 的 anti-join 與一對多翻倍陷阱。

🏆
NEW
科目二 pandas 聚合排名

總銷售額前三名怎麼抓

四段程式全實跑對質:A 的 head 撈到名冊前三、B 撈到最低三筆單、C 的 tail 撈到墊底兩名——只有先 groupby 加總、再 nlargest 才是名次(手機 110000/筆電 105000/平板 60000)。加映單筆冠軍陷阱:手錶一張 48000 巨單稱王單筆榜,品類總額其實只排第四。

⚡
NEW
科目二 Spark 大數據

Spark 的近似分位數與分散式聚合

approxQuantile 的 0.01 是名次誤差不是金額——實跑:近似 399 元 vs 精確 404 元、差 5 元(0.1 檔差 86 元)。top10 四站全在 Spark 端 lazy 執行、與 pandas nlargest 跨引擎一字不差;反面實跑全表 collect:10 萬列 vs 10 列——差一萬倍。

🩹
NEW
科目二 pandas 缺值處理

fillna 補中位數與可空整數 Int64

一個 None 讓整數欄默默升格 float64(實跑 [2022.0, nan, 2024.0]);median 跳洞內插出 2023.0 補回;astype('Int64') 收尾。加映:小寫 i 見 NaN 直接 IntCastingNaNError——報錯訊息還親自推薦 'Int64';大 I 不補洞也能裝 <NA>。

🚚
NEW
科目二 pandas 大數據

chunksize 串流平均:塞不進記憶體怎麼辦

一次一疊、只記兩個數字:串流累加與全載一字不差(784.866 元)、記憶體 5.4 vs 35.5 MB。「疊平均再平均」實跑高估 18.86 元——大疊小疊要加權(第 13 頁老戲);list()+concat 假串流峰值比全載還高。tracemalloc 四選項全實測。

🗓️
NEW
科目二 時間序列 特徵工程

rolling 與 shift:特徵不能偷未來

7 日移動平均+前一日銷售量的正解是 rolling(7)+shift(1)。shift(-1) 的作弊模型實跑 R²=1.0、係數 [−0.0, 1.0]——抄答案;部署日最後一列 NaN 當場穿幫。全期 mean 混未來、cumsum 走鐘 32.8 倍——四選項全實跑驗屍。

⚗️
NEW
科目二 假設檢定 scipy

Welch t 檢定判決書:p 直接比 α,不砍半

逆向工程重現 p=0.021 一字不差:0.021 < 0.05 拒絕 H0、equal_var=False=Welch(df 76.7 帶小數)。ttest_rel 硬上直接 ValueError;排列檢定 10,000 次演出 p 的本義;病態案例 0.0087 vs 0.4106——保險絲的價值。

🌡️
NEW
科目二 視覺化 相關

相關熱力圖:先算再畫、負一到一

先 corr 再 heatmap:實跑氣溫↔冰飲 +0.8956、手算一字不差。vmin=0 讓 12 格負相關集體隱形(−0.87 與 0 同色);餵原始 df 當場 ValueError;冰飲↔熱飲 −0.79 的假相關——偏相關 +0.03 拆穿第三變數。

🚰
NEW
科目二 大數據 pandas

chunksize:水龍頭不是水庫

reader 是 TextFileReader 不是 DataFrame:一次一塊、邊讀邊加——實跑全載 1,304.8 MB vs 串流峰值 41.1 MB、region 欄 category 縮 93 倍;單機串流不是 Spark、字典編碼值不變。

🧮 iPAS 數學四部曲

// 只教會考的,每頁三個互動實驗室+共用符號表
NEW
矩陣乘法 AI 基礎 互動實驗室

矩陣乘法的第一堂課

跟著貓老師 Mochi 看懂矩陣怎麼相乘、怎麼改變圖形,以及順序為什麼不能亂換;再從圖片濾鏡一路連到 Transformer 與 ChatGPT 背後的矩陣運算。

📐
NEW
線性代數 iPAS 初級+中級

線性代數速成

先把矩陣乘法一格一格算給你看,再玩維度接龍、向量羅盤與 PCA 主軸儀。不教數學系那套,只教 iPAS 真的會考的六件事:維度、NumPy 函式、餘弦相似度、特徵值、SVD、範數。

🎲
NEW
機率 iPAS 初級+中級

機率速成

點骰子自己組事件,親手驗證「互斥不等於獨立」;再用常態面積尺看 PDF 與 CDF 怎麼連動、二項分布什麼時候才能拿常態來近似。條件機率的分母到底是誰,一次搞定。

📊
NEW
統計檢定 iPAS 科目二核心

統計檢定選型

t 檢定?ANOVA?卡方還是雙比例 Z?三步決策樹幫你選對,每個結果都附歷屆真題。另有 Z 檢定判決台(拒絕域、p 值、信賴區間一致性)與 Pearson/Spearman/Kendall 抗打擊實驗。

⛰️
NEW
最佳化 iPAS 科目三核心

數值最佳化

「訓練不收斂」到底是哪一種病?梯度消失放大鏡把看不見的梯度畫成長條圖,一眼看懂 Sigmoid 為何害人、ResNet 為何有效、He 初始化差在哪個 √2。還有 Batch/Epoch 換算器與超參數搜尋競技場。

🔤
NEW
符號 速查 數學史

數學符號解碼器

「一堆奇怪符號搞得我很亂」——這不是你的問題。Σ 其實是希臘文的 S、∫ 是被拉長的 S、∂ 是圓體的 d。50 個符號的念法、意思、發明者與年代,可搜尋;查不到出處的(像學習率 η)也誠實標示,不編故事。

🐍 Python 與工具

// 從環境設定到 OOP 與記憶體視覺化
⚙️
NEW
Python 環境設定 安裝

Python 起步站

寫第一行程式之前的環境準備。用「環境選擇器」30 秒找到你的起點,搞懂 Colab、Jupyter、本機安裝三種執行方式,還有 VS Code 與 pip/venv。最快的路,其實完全不用安裝。

🧪
NEW
Python 入門 互動遊戲

Python 入門實驗室

從第一行 print() 到寫出自己的類別,共 16 個單元。每個單元都有範例、正反案例對照,還有動手玩的互動小遊戲,分兩種難度循序前進。

🛠️
NEW
IDE AI IDE 白話指南

什麼是 IDE?什麼是 AI IDE?

用「廚房與副主廚」的比喻,讓完全沒寫過程式的人 10 分鐘看懂 IDE 是什麼、AI IDE 又強在哪,以及該從哪一套工具開始。

🔌
NEW
API 觀念 白話指南

API 是什麼?

給完全新手的白話指南。不用先會寫程式,也能搞懂 API 到底在做什麼、為什麼到處都在講 API,以及它跟你每天用的 App 有什麼關係。

🎼
NEW
Framework Library 白話指南

Framework 與 Library:誰在指揮誰?

寫給文組與初學者的白話指南。一次講清楚 Framework 和 Library 的差別:到底是你呼叫它,還是它呼叫你?看完不再被這兩個詞搞混。

🐍
Python Beginner

Python 初學者指南

為什麼 Python 是 AI 的語言?帶你從頭了解 Python 的生態系與核心優勢,開啟你的 AI 學習之旅。

🏗️ 物件導向

// 從記憶體裡的門牌,一路看懂 Class、Instance 與 AI 套件裡的物件
📖
NEW
物件導向 記憶體 AI 套件
V1 · Gemini 製作

Python 互動繪本:型態 → 物件 → AI 套件

寫下 age = 25 時,記憶體發生哪 3 件事?為什麼變數只存「門牌」?從 int、str、list 一路揭開原來全都是物件,再用 Class 藍圖與 Instance 實例的眼光看 NumPy 的 .shape、Pandas 的 fillna 為什麼沒改到原表、sklearn 為什麼要先實例化。最後 1 分鐘快問快答驗收。

📖
NEW
物件導向 記憶體 AI 套件
V2 · Claude 製作

Python 記憶體透視:變數 → 物件 → AI 套件

左邊程式亮哪一行,右邊記憶體就同步變化。從 age = 25 的動作順序、b = a 為什麼不是複製、換箭頭與改物件的差別,一路看到 class 藍圖與 self,再用同一張圖看懂 NumPy 的 .shape、Pandas 的 fillna 為什麼沒改到原表、sklearn 的 fit 與 transform。最後 7 題隨堂測驗。

🏗️
NEW
Python OOP Class

Python OOP 互動實驗室

先體驗沒有物件導向的混亂,再用 class、instance、self 和 method 把資料與行為重新整理起來。用 iPhone 比喻一路拆到能真正理解 OOP 為何存在。