<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Brizen</title><description>記錄 AI、數碼與生活</description><link>https://brizen.dpdns.org/</link><language>zh-HK</language><item><title>疑難雜症</title><link>https://brizen.dpdns.org/posts/web-troubleshooting/</link><guid isPermaLink="true">https://brizen.dpdns.org/posts/web-troubleshooting/</guid><description>分享一些建站時遇到的奇怪小問題</description><pubDate>Fri, 28 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;分享一些建站時遇到的奇怪小問題&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Git推送問題&lt;/h3&gt;
&lt;h4&gt;概述&lt;/h4&gt;
&lt;p&gt;我最初打算效仿Fuwari搭建的經驗，本地修改後，使用&lt;code&gt;Git Push&lt;/code&gt;推送至Github庫，最後使用Cloudflare Pages完成網頁展示。然而，&lt;code&gt;Git Push&lt;/code&gt; 指令失敗了。&lt;/p&gt;
&lt;h4&gt;1. &lt;code&gt;Could not read from remote repository.&lt;/code&gt;錯誤&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;錯誤信息:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ERROR: Permission to Cooper1896/Hexo.git denied to deploy key
fatal: Could not read from remote repository.
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這是本次排查的核心問題。信息指出，Git 正在使用一個部署密鑰進行身份驗證，但最終無法讀取遠程倉庫。&lt;/p&gt;
&lt;p&gt;部署密鑰是綁定在單個倉庫上的，用來拉取代碼。鑑於我在搭建Fuwari時也是創建了密鑰後，通過SSH把文件推送至庫，此時我就有了第一個猜想：&lt;strong&gt;生成的密鑰已經被F庫所佔用&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;嘗試解決&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;棄用部署密鑰：&lt;/strong&gt; 在倉庫的 &lt;code&gt;Settings -&amp;gt; Deploy keys&lt;/code&gt; 中刪除了該密鑰。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;生成新的個人密鑰：&lt;/strong&gt; 創建了一個新的、專用於個人身份驗證的 SSH 密鑰對 (&lt;code&gt;id_hexo&lt;/code&gt; 和 &lt;code&gt;id_hexo.pub&lt;/code&gt;)。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;綁定個人密鑰：&lt;/strong&gt; 將新公鑰 (&lt;code&gt;id_hexo.pub&lt;/code&gt;) 添加到 GitHub 個人賬户的 &lt;code&gt;Settings -&amp;gt; SSH and GPG keys&lt;/code&gt; 中。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;1.1 本地 SSH 客户端配置&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;錯誤信息：&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;ERROR: Permission to Cooper1896/Hexo.git denied to deploy key
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;即使生成了新密鑰並添加到了 GitHub 賬户，系統在 &lt;code&gt;git push&lt;/code&gt; 時仍然可能嘗試使用舊的（或默認的）密鑰。這是因為新密鑰的文件名 (id_hexo) 不是 SSH 客户端的默認名稱（id_rsa）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;解決方案:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;創建並編輯了本地 SSH 配置文件,在 &lt;code&gt;config&lt;/code&gt; 文件中添加了以下內容，&lt;strong&gt;強制&lt;/strong&gt; SSH 客户端在連接 &lt;code&gt;github.com&lt;/code&gt; 時使用新創建的私鑰：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Host github.com
 HostName github.com
 User git
 IdentityFile &apos;ssh密鑰地址&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;1.2 GitHub 推送保護&lt;/h3&gt;
&lt;p&gt;搞定了密鑰，再次push，再次彈出錯誤信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;pre&gt;&lt;code&gt;remote: error: GH013: Repository rule violations found...
remote: - GITHUB PUSH PROTECTION
remote: - Push cannot contain secrets
remote: —— GitHub Personal Access Token ——————————————————————
remote:   locations:
remote:     - commit: 1659a89...
remote:       path: Pic_Github_Token.txt:1
! [remote rejected] main -&amp;gt; main (push declined due to repository rule violations)
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原因是因為身份驗證成功後，推送被 GitHub 的安全策略阻止。GitHub 的掃描功能檢測到我嘗試推送的某個提交 (&lt;code&gt;1659a89...&lt;/code&gt;) 中，有一個名為 &lt;code&gt;Pic_Github_Token.txt&lt;/code&gt; 的文件包含了一個 GitHub 個人訪問令牌 (PAT)。&lt;/p&gt;
&lt;p&gt;好嘛，此時我有兩個選擇：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;撤銷令牌&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;清理歷史：&lt;/strong&gt; 使用&lt;code&gt;git revert&lt;/code&gt; 從本地 Git 歷史中徹底移除了包含該機密的文件和提交。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;繞過：&lt;/strong&gt; 選擇訪問錯誤信息中提供的特定 URL，在 GitHub 界面上選擇“允許推送該機密”（但該文件會永久公開在倉庫歷史中）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;貌似最好的選擇是選項2，逐選擇2&lt;/p&gt;
&lt;h3&gt;1.3  &lt;code&gt;Updates were rejected&lt;/code&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;錯誤信息:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;! [rejected]        main -&amp;gt; main (non-fast-forward)
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Use &apos;git pull&apos; before pushing again.
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;看起來遠程倉庫已經接收到了新的提交請求。但是因為本地分支落後於遠程分支，Git 拒絕了直接推送以防止覆蓋遠程更改。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;解決方法&lt;/strong&gt;：執行 &lt;code&gt;git pull origin main&lt;/code&gt;，嘗試將遠程的更改拉取併合併到本地。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;1.4 拒絕合併不相關的歷史&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;錯誤信息:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fatal: refusing to merge unrelated histories
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在執行 &lt;code&gt;git pull&lt;/code&gt; 時觸發了此錯誤。這個問題我想半天不知道怎麼解決，逐問AI...&lt;/p&gt;
&lt;p&gt;核心問題在於我的本地倉庫是使用 &lt;code&gt;git init&lt;/code&gt; 獨立初始化的，而遠程 &lt;code&gt;Cooper1896/Hexo&lt;/code&gt; 倉庫是在 GitHub 上獨立初始化的。它們&lt;strong&gt;沒有共同的原始提交&lt;/strong&gt;，Git 默認拒絕合併兩個完全不相關的項目。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;解決方案:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;--allow-unrelated-histories&lt;/code&gt; 標誌強制 Git 合併這兩個不同的歷史記錄：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git pull origin main --allow-unrelated-histories
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Git 自動打開了文本編輯器（Vim/Nano），要求為這次合併提供一個提交信息。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通過保存並退出編輯器（ &lt;code&gt;:wq&lt;/code&gt;），完成了合併提交。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;至此終於解決...&lt;/p&gt;
&lt;hr /&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Hello World</title><link>https://brizen.dpdns.org/posts/hello-world/</link><guid isPermaLink="true">https://brizen.dpdns.org/posts/hello-world/</guid><description>邁入博客世界的第一篇</description><pubDate>Wed, 26 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Welcome to &lt;a href=&quot;https://hexo.io/&quot;&gt;Hexo&lt;/a&gt;! This is your very first post. Check &lt;a href=&quot;https://hexo.io/docs/&quot;&gt;documentation&lt;/a&gt; for more info. If you get any problems when using Hexo, you can find the answer in &lt;a href=&quot;https://hexo.io/docs/troubleshooting.html&quot;&gt;troubleshooting&lt;/a&gt; or you can ask me on &lt;a href=&quot;https://github.com/hexojs/hexo/issues&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Quick Start&lt;/h2&gt;
&lt;h3&gt;Create a new post&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ hexo new &quot;My New Post&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;More info: &lt;a href=&quot;https://hexo.io/docs/writing.html&quot;&gt;Writing&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Run server&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ hexo server
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;More info: &lt;a href=&quot;https://hexo.io/docs/server.html&quot;&gt;Server&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Generate static files&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ hexo generate
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;More info: &lt;a href=&quot;https://hexo.io/docs/generating.html&quot;&gt;Generating&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Deploy to remote sites&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ hexo deploy
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;More info: &lt;a href=&quot;https://hexo.io/docs/one-command-deployment.html&quot;&gt;Deployment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>AI是什麼？</title><link>https://brizen.dpdns.org/posts/ai-explained/</link><guid isPermaLink="true">https://brizen.dpdns.org/posts/ai-explained/</guid><description>聊聊ai</description><pubDate>Fri, 24 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;想了很久，終於有時間來講講AI了，些許錯誤，多多包容&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;I. 人工智能 (Artificial Intelligence,AI)&lt;/h3&gt;
&lt;p&gt;大家都聽過的詞語，依照維基百科的解釋:  &lt;a href=&quot;https://www.wikiwand.com/en/articles/Artificial_intelligence.com&quot;&gt;人工智能（AI）&lt;/a&gt;是指計算系統執行通常與人類智能相關任務的能力，例如學習、推理、解決問題、感知和決策。&lt;/p&gt;
&lt;p&gt;而AI分為 &lt;strong&gt;強AI&lt;/strong&gt; 和 &lt;strong&gt;弱AI&lt;/strong&gt;：&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;弱AI(ANI - Artificial Narrow Intelligence）&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;被設計用來 &lt;strong&gt;&lt;strong&gt;解決特定的任務&lt;/strong&gt;&lt;/strong&gt;（如下棋、人臉識別、寫代碼）。如AlphaGo, Copilot, Siri 均屬此類。&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;強 AI (AGI - Artificial General Intelligence):&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;理論上的“通用人工智能”，擁有與人類同等或超越人類的、跨領域的思考和學習能力。類似於天網、終結者的存在，或者説目標，目前尚未實現。&lt;/p&gt;
&lt;p&gt;隨着AI的不斷發展，也發展出了不同的發展方向，主要是:&lt;strong&gt;機器學習（ML）與專家系統（Expert Systems）&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;&lt;strong&gt;專家系統&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;專家系統是人工智能發展早期出現的一種 &lt;strong&gt;方法&lt;/strong&gt;，它屬於基於規則的 AI，與現代的機器學習驅動的 AI 有着十分鮮明對比。&lt;/p&gt;
&lt;h6&gt;&lt;strong&gt;核心思想與定義&lt;/strong&gt;&lt;/h6&gt;
&lt;p&gt;專家系統旨在模擬人類領域專家（如醫生、金融分析師）的決策能力和推理過程，通過將人類的專業知識進行形式化編碼，來解決複雜、專業性的問題。本質上是一個由程序員編寫的，十分龐大，嵌套極深的 &lt;code&gt;if-else&lt;/code&gt; 抉擇樹。&lt;/p&gt;
&lt;h6&gt;結構&lt;/h6&gt;
&lt;p&gt;一個典型的專家系統由三個關鍵組成部分構成：&lt;/p&gt;
&lt;h6&gt;&lt;strong&gt;1. 知識庫 (Knowledge Base)&lt;/strong&gt;&lt;/h6&gt;
&lt;p&gt;這是專家系統的信息來源，存儲了領域專家的所有專業知識。這些知識通常以兩種形式存在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;事實 (Facts):&lt;/strong&gt; 關於領域的基本信息（例如：“水在100°C 沸騰”）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;規則 (Rules):&lt;/strong&gt; &lt;strong&gt;條件-行動 (IF-THEN)&lt;/strong&gt; 語句，代表專家的經驗和推理邏輯。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;示例規則：&lt;/em&gt; &lt;code&gt;IF (病人有發燒) AND (病人有咳嗽) THEN (推斷患有呼吸道感染)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;&lt;strong&gt;2. 推理機 (Inference Engine)&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;顧名思義，它負責根據用户輸入的信息和知識庫中的規則進行邏輯推理，得出結論。主要的推理方法有兩種：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;正向鏈 (Forward Chaining):&lt;/strong&gt; &lt;strong&gt;數據驅動&lt;/strong&gt;。從已知事實開始，不斷應用規則，直到達到目標或所有規則都被應用。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;邏輯：&lt;/em&gt; 如果 $A$ 且 $B$ 為真，而我們知道 $A$ 和 $B$ 是真，則 $C$ 為真。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;反向鏈 (Backward Chaining):&lt;/strong&gt; &lt;strong&gt;目標驅動&lt;/strong&gt;。從目標（假設的結論）開始，向後尋找支持該結論的必要事實或子目標。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;邏輯：&lt;/em&gt; 要證明 $C$，需要 $A$ 和 $B$。那麼，先證明 $A$，再證明 $B$。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;&lt;strong&gt;3. 用户界面 (User Interface)&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;用於與用户交互,來接收你輸入資訊的地方&lt;/p&gt;
&lt;p&gt;相當直觀的一種結構，但是簡單的代價是會有兩個限制和問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;極其脆弱&lt;/strong&gt;：遇到規則之外的情況就崩潰。因此，相關模型多用於特定的領域，如醫療，金融等..&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;無法學習&lt;/strong&gt;:你必須手動更新模型的規則以及知識庫，維護的成本也大大增加&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;II. 機器學習 (Machine Learning, ML)&lt;/h3&gt;
&lt;p&gt;ML 的本質在於，它不再要求開發者為機器硬編碼規則，而是讓機器從海量數據中&lt;strong&gt;自動學習&lt;/strong&gt;（或“擬合”）出最優的映射函數 $f$。&lt;/p&gt;
&lt;h5&gt;一. 嚴謹的定義與三要素 (T, E, P)&lt;/h5&gt;
&lt;p&gt;機器學習最被認可的定義來自於計算機科學家 Tom M. Mitchell。他指出，一個程序從經驗中學習，必須滿足三個要素：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;要素&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;解釋&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;案例：垃圾郵件過濾器&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;任務 ($T$ - Task)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;機器需要完成的具體工作，通常是預測或推斷。&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;分類任務&lt;/strong&gt;：將郵件內容 $X$ 分類到 $Y={\text{“垃圾郵件”}, \text{“非垃圾郵件”}}$。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;經驗 ($E$ - Experience)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;模型用於學習的觀測數據。&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;數據集&lt;/strong&gt;：100 萬封郵件，其中每封郵件都已人工標註了正確的標籤。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;性能度量 ($P$ - Performance)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;量化模型表現的指標，衡量其預測結果與真實標籤的匹配程度。&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;準確率 (Accuracy)&lt;/strong&gt;：模型正確分類的郵件佔總郵件數的百分比。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;這也是機器學習與專家系統的最大不同。專家系統是輸入&lt;code&gt;數據&lt;/code&gt;+&lt;code&gt;規則&lt;/code&gt;，輸出&lt;code&gt;答案&lt;/code&gt;；而機器學習則是輸入&lt;code&gt;數據&lt;/code&gt;+&lt;code&gt;答案&lt;/code&gt;，輸出&lt;code&gt;規則&lt;/code&gt;。&lt;/p&gt;
&lt;h5&gt;二. 特徵工程 (Feature Engineering)&lt;/h5&gt;
&lt;p&gt;這是將原始數據（如圖像像素、原始文本）轉換成算法可以理解的、具有信息價值的特徵向量的過程，或許能稱為“學習”？&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;優化與統計&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;機器學習的過程，在數學上被定義為一個&lt;strong&gt;最優化問題&lt;/strong&gt;。 (讀M2震怒 。學習的目標是找到一組最優參數 $\theta$，使得模型的&lt;strong&gt;損失函數 ($L$)&lt;/strong&gt; 最小化。損失函數度量了模型預測 $\hat{Y}$ 與真實值 $Y$ 之間的差異：&lt;/p&gt;
&lt;p&gt;$$f^* = \underset{f}{\operatorname{argmin}} L(f(X), Y)$$&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;$f$: 代表模型（如神經網絡、決策樹）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;$L(f(X), Y)$: &lt;strong&gt;損失函數&lt;/strong&gt;，用於度量模型的預測 $f(X)$ 與真實標籤 $Y$ 之間的差異。最小化損失是學習的驅動力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;$\operatorname{argmin}$: &lt;strong&gt;最優化操作&lt;/strong&gt;，尋找使損失函數 $L$ 達到最小值的模型參數集 $\theta$。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;核心算法：梯度下降 (Gradient Descent)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;大多數 ML 模型（尤其是深度學習）使用梯度下降 (Gradient Descent)及其變種（如 SGD, Adam）來執行優化。大概就是一種數學的計算方式，我不會。&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote style=&quot;border-left: 4px solid #ff6b6b; background: #ffe0e0; padding: 15px; margin: 15px 0;&quot;&amp;gt;
看看得了
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;舉個栗子&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;例子1：銀行貸款違約風險預測&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;原始特徵 (Raw Data)&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;領域知識應用（工程操作）&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;構造的新特徵 (Engineered Feature)&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;價值&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;年齡&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;分箱（Binning）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;年齡段&lt;/code&gt; (例如：[18-25], [26-40], [41-60]...)&lt;/td&gt;
&lt;td&gt;將連續變量轉化為離散變量，捕捉不同年齡段客户的風險特性。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;信用卡額度&lt;/code&gt;、&lt;code&gt;已用額度&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;運算/比率&lt;/td&gt;
&lt;td&gt;&lt;code&gt;使用率&lt;/code&gt; ($\text{已用額度} / \text{總額度}$)&lt;/td&gt;
&lt;td&gt;這是比兩個獨立數值更有力的違約風險信號。高使用率通常意味着高風險。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;過去 12 個月的交易筆數&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;統計&lt;/td&gt;
&lt;td&gt;&lt;code&gt;最近 3 個月的平均交易額增長率&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;捕捉客户近期消費行為的趨勢變化，而非簡單的總量。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;居住城市&lt;/code&gt; (類別)&lt;/td&gt;
&lt;td&gt;編碼&lt;/td&gt;
&lt;td&gt;&lt;code&gt;城市風險評分&lt;/code&gt; (基於該城市歷史違約率)&lt;/td&gt;
&lt;td&gt;將高維度的類別特徵轉化為具有預測意義的數值特徵。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;案例 2：情緒分析&lt;/p&gt;
&lt;p&gt;客户評論：“這個應用太卡了，但設計很漂亮。”&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;原始特徵&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;領域知識應用（工程操作）&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;構造的新特徵&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;價值&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;原始句子&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;詞袋模型 (Bag-of-Words)&lt;/strong&gt; 或 &lt;strong&gt;TF-IDF&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;“卡”的頻率&lt;/code&gt;, &lt;code&gt;“漂亮”的權重&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;將不定長的文本轉化為固定長度的數值向量。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;詞語&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;N-gram 構造&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;“太卡了”&lt;/code&gt; (三元詞組)&lt;/td&gt;
&lt;td&gt;捕捉詞語的局部順序和語義，“太卡了”比單獨的“卡”更有負面情感。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;情感詞典&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;計數&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;負面詞彙數量&lt;/code&gt;, &lt;code&gt;正面詞彙數量&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;捕捉評論的&lt;strong&gt;情感極性&lt;/strong&gt;和&lt;strong&gt;強度&lt;/strong&gt;。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;連詞&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;結構分析&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;是否存在轉折連詞 (“但”, “可是”)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;“卡但漂亮”表示複雜情緒，模型應區別於“卡且醜陋”。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5&gt;三、 機器學習的主要任務類型&lt;/h5&gt;
&lt;p&gt;機器學習任務通常根據訓練數據的性質和模型目標被劃分為三大類：&lt;/p&gt;
&lt;h6&gt;1. 監督學習 (Supervised Learning)&lt;/h6&gt;
&lt;p&gt;監督學習是目前應用最廣泛的 ML 類型，類似於有老師手把手教你，即訓練數據中的每一個輸入 $X$ 都對應一個已知的、正確的輸出標籤 $Y$。這類算法的目的是學習和逼近輸入 $X$ 到輸出 $Y$ 的映射函數 $f$，使得對於任何新的輸入 $X_{\text{new}}$，模型能夠準確預測其對應的 $\hat{Y}_{\text{new}}$。&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote style=&quot;border-left: 4px solid #4dabf7; background: #e7f5ff; padding: 15px; margin: 15px 0;&quot;&amp;gt;
金融預測： 輸入經濟指標和歷史數據，輸出連續的未來某商品價格。&lt;/p&gt;
&lt;p&gt;住房預測： 輸入房屋面積、地理位置等，輸出具體的房價數值。&lt;/p&gt;
&lt;p&gt;&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h6&gt;2.無監督學習 (Unsupervised Learning)&lt;/h6&gt;
&lt;p&gt;無監督學習就像是讓學生自主探索。模型接收的訓練數據&lt;strong&gt;只有輸入 $X$&lt;/strong&gt;，沒有標籤 $Y$。在此類算法中，模型必須自主地探索數據，找出隱藏在數據中的統計結構、分佈等。它不進行預測，而是進行描述和組織。&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote style=&quot;border-left: 4px solid #4dabf7; background: #e7f5ff; padding: 15px; margin: 15px 0;&quot;&amp;gt;
購物分析：發現“如果客户購買了牛奶 (A)，那麼他們有 80% 的概率也會購買麪包 (B)”。
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h6&gt;3.&lt;a href=&quot;https://www.wikiwand.com/en/articles/Reinforcement_learning&quot;&gt;強化學習 (Reinforcement Learning, RL)&lt;/a&gt;&lt;/h6&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.wikiwand.com/_next/image?url=https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Reinforcement_learning_diagram.svg/1100px-Reinforcement_learning_diagram.svg.png&amp;amp;w=828&amp;amp;q=70&quot; alt=&quot;https://assets.wikiwand.com/_next/image?url=https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Reinforcement_learning_diagram.svg/1100px-Reinforcement_learning_diagram.svg.png&amp;amp;w=828&amp;amp;q=70&quot; /&gt;&lt;/p&gt;
&lt;p&gt;強化學習與前兩者完全不同，它是一種&lt;strong&gt;基於試錯 (Trial-and-Error)&lt;/strong&gt; 的學習方法，靈感來源於心理學中的行為主義。&lt;/p&gt;
&lt;p&gt;如果你想讓你家的狗學會坐下或叼飛盤，你不會像人類一樣讓它看書，而是使用&lt;strong&gt;獎勵&lt;/strong&gt;和&lt;strong&gt;懲罰&lt;/strong&gt;來塑造它的行為，這也是強化學習的邏輯。訓練機器狗的過程是一個永不停止的、基於&lt;strong&gt;馬爾可夫決策過程 (MDP)&lt;/strong&gt; 的循環：&lt;/p&gt;
&lt;h4&gt;步驟 1：觀察&lt;/h4&gt;
&lt;p&gt;機器狗環顧四周，確定它在哪裏（&lt;strong&gt;狀態 $S$&lt;/strong&gt;）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;例如：&lt;/em&gt; 機器狗知道它在 $(5, 5)$ 位置，並且聞到了前方有食物的氣味。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;步驟 2：行動&lt;/h4&gt;
&lt;p&gt;機器狗根據它&lt;strong&gt;當前的策略 $\pi$&lt;/strong&gt;（行為準則），決定下一步做什麼（&lt;strong&gt;行動 $A$&lt;/strong&gt;）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;例如：&lt;/em&gt; 機器狗的策略是“聞到食物，就前進”。它執行了“前進”的動作。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;步驟 3：反饋與獎勵&lt;/h4&gt;
&lt;p&gt;機器狗執行動作後，環境發生變化，並返回反饋：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;新狀態 $S&apos;$：&lt;/strong&gt; 機器狗移動到了 $(6, 5)$ 位置。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;獎勵 $R$：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;如果它吃到了食物：$+100$ (獎勵)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果它撞到了牆：$-10$ (懲罰)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果它踩到了地雷：$-1000$ (巨大懲罰)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果只是普通移動：$-1$ (微小懲罰)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;步驟 4：更新策略&lt;/h4&gt;
&lt;p&gt;機器狗利用這個反饋（獎勵 $R$）來&lt;strong&gt;評估&lt;/strong&gt;它剛才的行動好不好，並&lt;strong&gt;調整它的策略 $\pi$&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;如果 $R$ 為正：&lt;/strong&gt; 它知道這個行動是好的，下次在類似狀態下會傾向於重複這個行動。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;如果 $R$ 為負：&lt;/strong&gt; 它知道這個行動是壞的，下次在類似狀態下會避免這個行動。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個循環會重複數百萬次，機器狗從隨機的試錯開始，逐步搭建一套最優策略，即：如何避開地雷，並以最快的速度找到最多的食物。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;III 深度學習 (Deep Learning,DL)&lt;/h3&gt;
&lt;p&gt;深度學習屬於機器學習的其中一種，是實現機器學習的一種技術。它特指使用一種名為&lt;strong&gt;深度神經網絡 (Deep Neural Networks, DNN)&lt;/strong&gt; 的特定模型結構來完成學習任務。&lt;/p&gt;
&lt;h5&gt;説文解字&lt;/h5&gt;
&lt;p&gt;“深”，意為深度，有點像是層級化的特徵學習&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;傳統 ML：&lt;/strong&gt; 高度依賴人類專家手動設計特徵。例如，要識別一張圖片中的人臉，你可能需要手動編寫代碼來檢測“眼睛的形狀”、“鼻子的比例”、“膚色分佈”等特徵。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;深度學習：&lt;/strong&gt; 實現了自動化的特徵學習。您只需將原始數據（如圖像的原始像素）餵給模型，模型會自動在它的“深度”結構中學習到最優特徵。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這種叫做&lt;strong&gt;層級化特徵學習&lt;/strong&gt;&lt;/p&gt;
&lt;h5&gt;舉個栗子&lt;/h5&gt;
&lt;p&gt;以圖像識別的CNN為例:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Layer 1 (淺層):&lt;/strong&gt; 神經網絡的第一層會自動學習到最基礎的特徵，如&lt;code&gt;邊緣&lt;/code&gt;、&lt;code&gt;角落&lt;/code&gt;、簡單的&lt;code&gt;顏色塊&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Layer 2 (中層):&lt;/strong&gt; 這一層會組合第一層的簡單特徵，自動學習到更復雜的形狀和紋理，如&lt;code&gt;圓形&lt;/code&gt;、&lt;code&gt;網格狀&lt;/code&gt;、&lt;code&gt;毛髮紋理&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Layer 3 (深層):&lt;/strong&gt; 這一層會組合中層的形狀，自動學習到物體的部件，如&lt;code&gt;眼睛&lt;/code&gt;、&lt;code&gt;鼻子&lt;/code&gt;、&lt;code&gt;汽車輪胎&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Output Layer (頂層):&lt;/strong&gt; 最終，頂層會組合這些部件，做出最終的分類判斷：“這是一張人臉”或“這是一輛汽車”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;深度&lt;/strong&gt; 指的就是這種特徵抽象的層級數量。因為模型會自動學習這些特徵，所以它能發現人類工程師難以想到的更優、更抽象的東西。&lt;/p&gt;
&lt;h5&gt;構成&lt;/h5&gt;
&lt;p&gt;一個&lt;strong&gt;深度神經網絡&lt;/strong&gt; 由三個部分組成：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;輸入層 (Input Layer):&lt;/strong&gt; 接收原始數據（如圖像像素、詞向量）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;隱藏層 (Hidden Layers):&lt;/strong&gt; 這是模型的核心。DNN 至少有兩個或更多的隱藏層（通常是幾十到幾百層）。每一層都由許多&lt;strong&gt;神經元&lt;/strong&gt; 組成，每個神經元都會對其輸入進行&lt;strong&gt;加權求和&lt;/strong&gt;並應用&lt;strong&gt;激活函數&lt;/strong&gt;來引入非線性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;輸出層 (Output Layer):&lt;/strong&gt; 生成最終的預測結果（如分類的概率）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;主要架構&lt;/h5&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;架構&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;全稱&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;核心機制&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;擅長領域&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CNN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;卷積神經網絡&lt;/strong&gt;&amp;lt;br&amp;gt;(Convolutional Neural Network)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;卷積核 (Filters)&lt;/strong&gt; 與 &lt;strong&gt;參數共享&lt;/strong&gt;。&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;網格狀數據（如圖像）&lt;/strong&gt;：圖像識別、醫學影像分析、目標檢測。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RNN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;循環神經網絡&lt;/strong&gt;&amp;lt;br&amp;gt;(Recurrent Neural Network)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;隱藏狀態 (Hidden State)&lt;/strong&gt; 的循環，用於處理序列。&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;序列數據（如文本、時間序列）&lt;/strong&gt;：自然語言處理、語音識別。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LSTM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;長短期記憶網絡&lt;/strong&gt;&amp;lt;br&amp;gt;(Long Short-Term Memory)&lt;/td&gt;
&lt;td&gt;RNN 的變體，使用“門控”機制來解決 RNN 的  &lt;strong&gt;長距離依賴（遺忘&lt;/strong&gt;問題。&lt;/td&gt;
&lt;td&gt;複雜的序列任務。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Transformer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;(無特定全稱)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;自注意力機制 (Self-Attention)&lt;/strong&gt;。&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;現代 NLP 的基石&lt;/strong&gt;：GPT-4、BERT 等大型語言模型，以及機器翻譯。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;lt;blockquote style=&quot;border-left: 4px solid #ff6b6b; background: #ffe0e0; padding: 15px; margin: 15px 0;&quot;&amp;gt;
以上內容看看得了
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;看不懂是正常的，我們來舉個栗子&lt;/p&gt;
&lt;p&gt;讓我們把&lt;strong&gt;深度神經網絡 (DNN)&lt;/strong&gt; 想像為一家公司&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;第一部分：DNN 的結構 — 公司的層級&lt;/h3&gt;
&lt;h4&gt;1. 輸入層 — 前台接待員&lt;/h4&gt;
&lt;p&gt;這是公司的前台。當客户（數據）上門時，前台接待員（輸入神經元）負責接收最原始、最瑣碎的信息。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;事件：&lt;/strong&gt; 客户給了一張圖片。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;接待員的工作：&lt;/strong&gt; 他們不會思考，只是把圖片拆解成最基本的信息（比如，每個像素點的顏色值）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;“接待員 1：左上角像素，紅色值 255。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“接待員 2：左上角像素，綠色值 100。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;輸入層只負責&lt;strong&gt;接收原始數據&lt;/strong&gt;，並將其傳遞給下一層。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;2. 隱藏層 — 工作團隊&lt;/h4&gt;
&lt;p&gt;深度一詞的由來。想像每一家公司有很多部門。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;假設每一層都是一個部門。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;工作流程：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;層級 1 (部門A)：&lt;/strong&gt; 他們從所有“接待員”那裏拿到原始像素數據。他們的工作是&lt;strong&gt;識別最簡單的模式&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;員工 A：“我發現了一些橫向邊緣。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;員工 B：”我發現了一些垂直線條。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;員工 C：“我發現了一塊毛茸茸的紋理。”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;層級 2 (部門B)：&lt;/strong&gt; 他們不看原始數據，只看部門A的報告。他們的工作是&lt;strong&gt;組合簡單模式，形成複雜形狀&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;員工 X：”我把&lt;code&gt;邊緣 A&lt;/code&gt;和&lt;code&gt;紋理 C&lt;/code&gt;組合起來，這看起來像一個&lt;code&gt;耳朵&lt;/code&gt;的輪廓。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;員工 Y：“我把&lt;code&gt;線條 B&lt;/code&gt;和另一條線組合，這像&lt;code&gt;鬍鬚&lt;/code&gt;。”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;隱藏層 3 (部門C)：&lt;/strong&gt; 他們繼續組合先前部門的所有報告，形成更復雜的概念。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;員工 P：”我拿到了&lt;code&gt;耳朵&lt;/code&gt;、&lt;code&gt;鬍鬚&lt;/code&gt;和&lt;code&gt;眼睛&lt;/code&gt;的報告，我認為這構成了一張&lt;code&gt;動物的臉&lt;/code&gt;。”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;...... 以此類推&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;3. 權重— 經理的偏好&lt;/h4&gt;
&lt;p&gt;每個經理在看下屬的報告時，都有自己的&lt;strong&gt;偏好（權重）&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在部門A的經理看來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;下屬 A (邊緣) 的報告&lt;strong&gt;非常重要&lt;/strong&gt; (權重 = 0.9)。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;下屬 B (線條) 的報告&lt;strong&gt;不太重要&lt;/strong&gt; (權重 = 0.1)。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;下屬 C (紋理) 的報告&lt;strong&gt;中等重要&lt;/strong&gt; (權重 = 0.5)。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;經理會把所有報告的&lt;strong&gt;重要性&lt;/strong&gt;加權求和，形成自己的最終判斷。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;4. 輸出層 — 老闆&lt;/h4&gt;
&lt;p&gt;這是一家公司的最高層&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;老闆不看任何瑣碎細節，只看各部門的最終報告。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;決策：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A 報告：“我 95% 確定這是一張‘動物的臉’。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;B 報告：“我 80% 確定這是‘貓的身體’。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;X 報告：“我20%確定是‘狗的身體’。”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;老闆綜合所有最高層的信息，做出最終的、唯一的決策：“&lt;strong&gt;我宣佈，這是貓&lt;/strong&gt;。”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;第二部分：反向傳播 — 秋後算賬&lt;/h3&gt;
&lt;p&gt;這時候，身為正常人的你下樓一看，糟糕了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;老闆：“這是貓！”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你：“？？？這不是狗嗎？”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;現在，公司必須從這個巨大的錯誤中學習。這就是&lt;strong&gt;反向傳播 (Backpropagation)&lt;/strong&gt; 的開始，它是一個&lt;strong&gt;追責&lt;/strong&gt;和&lt;strong&gt;糾正&lt;/strong&gt;的過程。&lt;/p&gt;
&lt;p&gt;生氣的你衝到老闆面前，一招大荒囚天指技驚四座。&lt;/p&gt;
&lt;p&gt;“你個蠢貨，那是隻狗！”&lt;/p&gt;
&lt;h5&gt;反向追責 (Backward Pass)&lt;/h5&gt;
&lt;p&gt;這個“追責”的過程是&lt;strong&gt;從老闆開始，一層一層往下&lt;/strong&gt;的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;第 1 站：老闆 (輸出層)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;你問老闆：&lt;/strong&gt; “你為什麼判斷是貓？”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;老闆回答：&lt;/strong&gt; “因為我的 A 報告 (動物的臉) 和 B 報告 (貓的身體) 都給了充足的論證。我的偏好是更相信 B(貓的身體)。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;你的指示 (梯度)：&lt;/strong&gt; “你（老闆）的 &lt;strong&gt;判斷&lt;/strong&gt; 錯了！下次 B (貓的身體) 報告時，你&lt;strong&gt;必須降低對它的信任度&lt;/strong&gt; (降低權重)。同時，X (狗的身體) 的報告，你&lt;strong&gt;必須提高信任度&lt;/strong&gt; (提高權重)。”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;第 2 站：部門經理 (隱藏層 N)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;老闆跑去問經理：&lt;/strong&gt; “你為什麼説那是‘貓的身體’？害我被罵！”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;經理回答：&lt;/strong&gt; “因為我的員工的分析，讓我更偏向於相信是貓的身體。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;總教練指示 (梯度)：&lt;/strong&gt; “你&lt;strong&gt;判斷&lt;/strong&gt; 也錯了！下次報告時，你&lt;strong&gt;必須降低對它的信任度&lt;/strong&gt;。同時，你要更關注狗爪子的報告！”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;...... 以此類推，直至最底層&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;3. 鏈式法則 (Chain Rule)&lt;/h4&gt;
&lt;p&gt;你注意到了嗎？&lt;strong&gt;錯誤的“責任”從頂層傳遞到了底層。&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;老闆的錯誤，導致了對經理的“指責”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;經理的錯誤，導致了對員工的“指責”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;這個&lt;strong&gt;指責&lt;/strong&gt;的&lt;strong&gt;具體數值（你應該調整多少？）&lt;/strong&gt;，在數學上就是&lt;strong&gt;梯度 (Gradient)&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;這種&lt;strong&gt;逐層反向傳遞責任&lt;/strong&gt;的數學工具，就是&lt;strong&gt;鏈式法則 (Chain Rule)&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;4. 全員調整 (Weight Update)&lt;/h4&gt;
&lt;p&gt;經過這一次秋後算賬，公司裏的&lt;strong&gt;每一個經理，一直到底層員工（所有神經元）&lt;/strong&gt;，都收到了一個具體的“調整指令”：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“你之前對下屬 X 的報告‘偏好’（權重）太高了，下次把它調低 0.05%。”
“你之前對下屬 Y 的報告‘偏好’太低了，下次把它調高 0.02%。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;這個過程（決策 -&amp;gt; 犯錯 -&amp;gt; 反向追責 -&amp;gt; 全員微調）會重複數百萬次。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最終，這家公司的所有經理都學會了一套極其複雜且精妙的“偏好”（權重），使得他們在下次看到一張“狗”的圖片時，能從前台開始，一路正確地傳遞信息，最終讓老闆做出正確的決策：“這是狗！”&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;IV 注意力的革命&lt;/h3&gt;
&lt;p&gt;在 GPT 出現之前，處理序列數據（如文本、語音）的主流模型是 &lt;strong&gt;RNN (循環神經網絡)&lt;/strong&gt; 及其變體 &lt;strong&gt;LSTM&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;RNN 的設計很直觀：它像人一樣，一個詞一個詞地閲讀。它有一個“記憶單元”（Hidden State），在閲讀句子:&apos;The cat sat on the floor.&apos;時，在讀完“The cat”後，會把&apos;The cat&apos;的信息編碼到記憶裏，再去讀下一個詞‘sat’。&lt;/p&gt;
&lt;p&gt;但這種設計存在兩個致命問題。&lt;strong&gt;首先是長距離依賴和梯度消失&lt;/strong&gt;：當句子很長時（“我昨天...（省略50個詞）...那隻貓”），到處理“貓”時，關於“昨天”的信息（梯度）在“記憶”中已經極其微弱，模型“忘記”了。&lt;strong&gt;其次是串行計算瓶頸&lt;/strong&gt;：你必須處理完 &lt;code&gt;word[n]&lt;/code&gt; 才能處理 &lt;code&gt;word[n+1]&lt;/code&gt;。這在 GPU 時代是災難性的，因為 GPU 最擅長的是&lt;strong&gt;並行計算&lt;/strong&gt;（同時處理 1000 個 &lt;code&gt;word&lt;/code&gt;），而 RNN 的設計使其無法利用這一點。&lt;/p&gt;
&lt;p&gt;直到 2017 年，一篇論文&lt;a href=&quot;https://proceedings.neurips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf&quot;&gt;《Attention Is All You Need》&lt;/a&gt;徹底改變了這一切。&lt;strong&gt;Transformer&lt;/strong&gt; 模型登場，它做的第一件事就是：&lt;strong&gt;徹底拋棄 RNN 的“循環”結構&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Transformer 的核心是&lt;strong&gt;自注意力機制 (Self-Attention)&lt;/strong&gt;。它的核心思想是：一個句子中的詞，其含義不是孤立的，而是由它和句子中所有其他詞的關係共同決定的。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;例子：“The &lt;strong&gt;animal&lt;/strong&gt; didn&apos;t cross the street because &lt;strong&gt;it&lt;/strong&gt; was too tired.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;當模型處理 &quot;it&quot; 時，&quot;it&quot; 指的是 &quot;animal&quot; 還是 &quot;street&quot;？RNN 必須依賴其搖搖欲墜的“短期記憶”。而 Self-Attention 允許 &quot;it&quot; &lt;em&gt;直接“看”向&lt;/em&gt; 句子中的所有其他詞，並計算一個“注意力得分”。它會發現 &quot;it&quot; 和 &quot;animal&quot; 的關聯性遠高於 &quot;street&quot;。&lt;/p&gt;
&lt;p&gt;那麼，Self-Attention 在技術上是如何做到這一點的呢？它為句子中的 每個詞 都生成三個不同的向量：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Query (Q) 向量：&lt;/strong&gt; 代表當前詞作為“查詢者”的身份。可以理解為：“&lt;strong&gt;我&lt;/strong&gt; (it) 是誰？我正在尋找和我相關的東西。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Key (K) 向量：&lt;/strong&gt; 代表該詞可被“索引”的標籤。可以理解為：“我是“animal”，一個可以被指代的名詞。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Value (V) 向量：&lt;/strong&gt; 代表該詞的“真正含義”或“內容”。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;整個過程如下（以‘it’為例）：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;首先是打分(Scoring)&lt;/strong&gt;：拿 &quot;it&quot; 的 &lt;strong&gt;Q 向量&lt;/strong&gt;，去和 &lt;strong&gt;句子中所有詞&lt;/strong&gt;（包括 &quot;it&quot; 自己）的 &lt;strong&gt;K&lt;/strong&gt; 向量進行&lt;strong&gt;點積&lt;/strong&gt; (Dot-Product)。這個點積的結果，就是&lt;strong&gt;相關性得分&lt;/strong&gt;。（如果 &quot;it&quot; 的 Q 和 &quot;animal&quot; 的 K 很接近，得分就高）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;接着是歸一化(Softmax)&lt;/strong&gt;：將這些原始得分通過一個 Softmax 函數，將其轉換為總和為 1 的“注意力權重”（例如：{ &quot;The&quot;: 0.05, &quot;animal&quot;: &lt;strong&gt;0.85&lt;/strong&gt;, ..., &quot;it&quot;: 0.05, ...}）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;最後是加權求和(Weighted Sum)&lt;/strong&gt;：用這些&lt;strong&gt;注意力權重&lt;/strong&gt;，去對 句子中所有詞 的 &lt;strong&gt;V&lt;/strong&gt; 向量進行加權求和。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Output_for_it = (0.05 * V_The) + (0.85 * V_animal) + ...&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;最終的結果是： &quot;it&quot; 的原始 V 向量（它自己的含義）被“注入”了 85% 的 &quot;animal&quot; 的 V 向量（含義）。模型在這一層就明確知道了 &quot;it&quot; 指向 &quot;animal&quot;。&lt;/p&gt;
&lt;p&gt;Transformer 的革命性在於兩個方面。&lt;strong&gt;第一是並行化&lt;/strong&gt;：整個 Q-K-V 計算是純粹的矩陣乘法。GPU 可以 &lt;em&gt;同時&lt;/em&gt; 計算句子中所有詞的 Q/K/V 和注意力得分。這充分運用了設備的算力，使得訓練千億（甚至萬億）參數的巨型模型（LLM）成為可能。&lt;strong&gt;第二是全局依賴&lt;/strong&gt;：任何兩個詞（無論相隔多遠）的“距離”都為 1。模型可以輕易捕捉長距離依賴，徹底解決了 RNN 的“遺忘”問題。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;東拼西湊的一個月，終於完成了🙌&lt;/p&gt;
</content:encoded></item><item><title>淺談解鎖bootloader與背後的原理</title><link>https://brizen.dpdns.org/posts/bootloader-unlock/</link><guid isPermaLink="true">https://brizen.dpdns.org/posts/bootloader-unlock/</guid><description>講講我們俗稱&quot;解bl&quot;的背後原理</description><pubDate>Fri, 29 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Boot Rom&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/gh/Cooper1896/MyPic/68b1859c50416_1756464540.webp&quot; alt=&quot;高通平台啓動流程&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;center&amp;gt;高通平台啓動流程&amp;lt;/center&amp;gt;&lt;/p&gt;
&lt;p&gt;根據流程圖可以看見，在設備通電後，會首先運行PBL(Primary Boot Loader)。此時CPU會從固定地址(如ROM)執行Boot Rom代碼[^1]，初始化最低級的硬件(如時鐘,CPU核心等)。之後他會加載SBL(Secondary Boot Loader)到SRAM，並使用Root of trust公鑰來驗證SBL的簽名。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;PBL(XBL或者SBL)&lt;/h2&gt;
&lt;p&gt;這部分便是今天要講的重點——Bootloader。他主要的流程如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;讀取Boot Mode-&amp;gt;
初始化啓動接口(UFS,USB,eMMC,NAND)-&amp;gt;
讀取下一階段鏡像-&amp;gt;
驗證數字簽名(RSA+SHA-256)-&amp;gt;
├─ 驗證通過 → 加載 SBL 並跳轉 
└─ 驗證失敗 → 進入 Download Mode（刷機接口）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;顯而易見，PBL的目標是最大化保護設備的安全，以下簡單講幾個有關的安全機制:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;簽名驗證(&lt;strong&gt;Signature Verification&lt;/strong&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讓所有要啓動的 Next-stage Bootloader (SBL/XBL) 都必須經過OEM Key的簽名驗證&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;防回滾(&lt;strong&gt;Rollback Protection&lt;/strong&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;防止刷入低於eFuse記錄版本的固件
這也是為什麼，即使你有官方簽名的舊版本固件，也無法手動刷入。這是因為其版本號低於eFuse中記錄的版本，PBL拒絕了該鏡像的加載&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;安全模式入口(EDL/Download Mode)限制&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大多OEM廠商都會限制安全模式入口。限制後，新版設備可能需要配合授權服務器（如 Mi Auth、Samsung KNOX）才能刷機，PBL 會要求 PC 工具和 OEM 服務器握手，驗證授權 Token。&lt;/li&gt;
&lt;li&gt;這也是為什麼售後能幫你刷機降級。員工會使用公司提供的PC工具，驗證其員工身份，得到授權後可以進入該模式進行刷機。但由於內部內鬼等原因，時不時會有內部Token放出來出售(點名表揚小米😅)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你會發現，在流程中，他會驗證鏡像是否經過OEM/廠家的簽名認證。&lt;/p&gt;
&lt;p&gt;這意味着——無論你使用什麼刷機工具(Fastboot、MiFlash等)去刷入固件，最終能否啓動，取決於PBL是否認可該鏡像的簽名。&lt;/p&gt;
&lt;p&gt;這也是為什麼你要在解鎖Bootloader後，才能刷入第三方ROM。&lt;/p&gt;
&lt;h3&gt;PBL與Bootloader鎖&lt;/h3&gt;
&lt;p&gt;Bootloader的鎖定狀態是由eFuse/OTP(One-Time Programmable Memory)記錄，在PBL啓動時會讀取這些硬件熔絲位(Fuse Bits)&lt;/p&gt;
&lt;p&gt;在寄存器中一般會記錄一下信息:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;BOOT_UNLOCK&lt;/code&gt;:表示當前解鎖狀態(0 = Locked, 1 = Unlocked)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OEM_KEY_HASH&lt;/code&gt;:廠商公鑰的哈希值，用於簽名驗證&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ANTI-ROLLBACK_VER&lt;/code&gt;:防回滾版本號。用於驗證鏡像版本，確保鏡像版本 ≥ eFuse版本，防止降級到存在漏洞的固件。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;解鎖Bootloader流程&lt;/h4&gt;
&lt;p&gt;以 Android + Qualcomm SoC 為例：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用户通過 &lt;code&gt;fastboot oem unlock&lt;/code&gt; 發送解鎖命令。&lt;/li&gt;
&lt;li&gt;Fastboot 模式下的 &lt;strong&gt;Secondary Bootloader（SBL/XBL）&lt;/strong&gt; 會請求用户確認（擦除數據）。&lt;/li&gt;
&lt;li&gt;SBL/XBL 向 &lt;strong&gt;Qualcomm Secure Execution Environment（QSEE, TrustZone）&lt;/strong&gt; 發送解鎖請求。&lt;/li&gt;
&lt;li&gt;QSEE 調用 &lt;strong&gt;PBL 對接的安全熔絲編程接口&lt;/strong&gt;（OEM 控制）燒錄 &lt;code&gt;BOOT_UNLOCK=1&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;解鎖完成， PBL 在啓動鏈中會跳過 OEM Key 驗證，或者採用開發者密鑰（用於允許第三方鏡像）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;:::note
PBL 自身不會被修改，但它的行為會因熔絲位（Fuse Bit）的狀態而改變。
:::&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;熔斷機制&lt;/h2&gt;
&lt;p&gt;個人覺得熔斷機制挺有趣的，簡單講講:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在硅片集成電路內部，設計了由薄金屬或多晶硅工藝實現的特殊可控連線。這條連線在出廠時是導通的，芯片運行時可通過高電壓/電流或激光能量將其永久斷開（或改變其物理狀態），從而記錄一個“1”或“0”的狀態。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;基於其是在物理層面的熔斷，因此無法恢復。
比如&lt;strong&gt;Samsung Knox&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Samsung Knox&lt;/h3&gt;
&lt;h4&gt;流程&lt;/h4&gt;
&lt;p&gt;以Bootloader解鎖為例:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;用户在 &lt;strong&gt;Download Mode&lt;/strong&gt; 下選擇 “OEM Unlock” 並確認&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;當前運行在 SBL（或 ABL）階段的 Bootloader 向 TrustZone Secure Monitor 發起 &lt;strong&gt;SMC（Secure Monitor Call）&lt;/strong&gt; 請求：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;`smc_call(SMC_CMD_BLOW_FUSE, KNOX_WARRANTY_BIT_ID);`
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TrustZone 內的安全固件（TZSW）通過 &lt;strong&gt;eFuse Controller&lt;/strong&gt; 選中對應的熔絲行列地址&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;硬件打開 &lt;strong&gt;VPP 高壓電源軌&lt;/strong&gt;（通常在芯片設計時是隔離狀態，只在安全狀態下可用，防止自己電自己）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在一個很短的時間內向該熔絲單元施加大電流/高壓&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;熔絲鏈路永久斷開（熔斷），邏輯狀態從 0 → 1&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;把新狀態Latch到一個只讀寄存器（Boot ROM 在每次啓動時讀取）&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;恭喜你！你的手機將會....&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Samsung Pay/Samsung Pass 永久不可用&lt;/li&gt;
&lt;li&gt;安全文件夾功能無法使用&lt;/li&gt;
&lt;li&gt;保修失效
...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;:::note
理論上可以燒寫另一個位表示重新鎖定（部分 SoC 採用雙位方案 LOCK/UNLOCK），但是我不懂捏
:::&lt;/p&gt;
&lt;p&gt;:::important
如果你打算購入Samsung的二手機，需要注意這一點，以免一失足成千古恨。
:::&lt;/p&gt;
&lt;p&gt;end~😌&lt;/p&gt;
&lt;p&gt;[^1]: 這段Boot Rom代碼寫死在SoC內部的Mask Rom裏，無法更改。&lt;/p&gt;
</content:encoded></item><item><title>Fuwari部署Twikoo過程分享</title><link>https://brizen.dpdns.org/posts/twikoo-comments/</link><guid isPermaLink="true">https://brizen.dpdns.org/posts/twikoo-comments/</guid><description>此文章記錄Twikoo部署過程，僅供參考</description><pubDate>Tue, 26 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Twikoo — &quot;一個簡潔、安全、免費的靜態網站評論系統&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;本站原本使用Giscus的評論功能&lt;/p&gt;
&lt;p&gt;但考慮到必須要Github賬户的侷限性&lt;/p&gt;
&lt;p&gt;為了更方便評論，我決定放棄前者，毅然加入更權威的代表—‘Twikoo’&lt;/p&gt;
&lt;p&gt;本文參考官方教程，也可以按照官方的來，大差不差~&lt;/p&gt;
&lt;h2&gt;搭建後端&lt;/h2&gt;
&lt;p&gt;首先，你需要註冊一個&lt;a href=&quot;https://account.mongodb.com/account/login&quot;&gt;MongoDB&lt;/a&gt;賬號以獲取一個免費的數據庫&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://twikoo.js.org/mongodb-atlas&quot;&gt;MongoDB Atlas | Twikoo 文檔&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;區域選擇: Region優先選擇離主機近的站點，一般默認的就是。如果使用雲主機就按其地理位置為準。
設置好後，你將會得到類似的代碼：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mongodb+srv://&amp;lt;db_username&amp;gt;:&amp;lt;db_password&amp;gt;@cluster0.xxx.mongodb.net/?retryWrites......Cluster0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::danger
請牢記在 Password Authentication 下設置數據庫用户名和密碼!!!
:::&lt;/p&gt;
&lt;h2&gt;部署數據庫&lt;/h2&gt;
&lt;p&gt;使用你的Github賬户來登錄Vercel&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://vercel.com&quot;&gt;Vercel Dashboard&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;再點擊下面的鏈接來快速部署&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fimaegoo%2Ftwikoo%2Ftree%2Fmain%2Fsrc%2Fserver%2Fvercel-min&amp;amp;teamSlug=brizens-projects&quot;&gt;New Project – Vercel&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Git Providers&lt;/code&gt;選擇&lt;code&gt;Github&lt;/code&gt;，&lt;code&gt;Git Scope&lt;/code&gt;選擇自己的賬户，&lt;code&gt;Private Repository Name&lt;/code&gt;為你的庫命名。&lt;/p&gt;
&lt;p&gt;若是一切順利，你會看見這樣的畫面
&lt;img src=&quot;https://cdn.jsdelivr.net/gh/Cooper1896/MyPic/68ac9f5575e4b_1756143445.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這時你還不會有Domain位址&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;選擇&lt;code&gt;Settings&lt;/code&gt; - &lt;code&gt;Environment Variables&lt;/code&gt;,填寫以下變量：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Key:MONGODB_URI
Value:mongodb+srv://&amp;lt;db_username&amp;gt;......&amp;lt;此處需要更改為你上面獲取到的鏈接字符&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;隨後點save&lt;/p&gt;
&lt;p&gt;此時再選擇&lt;code&gt;Deployments&lt;/code&gt;,點擊任意一個項目後面的三個點，再選擇&lt;code&gt;Redeploy&lt;/code&gt;，再選擇下方的&lt;code&gt;Redeploy&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;這時回到&lt;code&gt;Overview&lt;/code&gt;,會發現&lt;code&gt;Domain&lt;/code&gt;處已分配了一個域名,複製下該域名。&lt;/p&gt;
&lt;h2&gt;參數設置&lt;/h2&gt;
&lt;p&gt;可以跟隨其他大大的教程設置本地文件，偉大無需多言&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.qqquq.com/posts/fuwari-twikoo-comments/&quot;&gt;給你的 Fuwari 接入 Twikoo 評論 - 鹹魚小窩&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;其中，請將上面複製的域名複製到&lt;code&gt;envID&lt;/code&gt;,並將&amp;lt;username&amp;gt;,&amp;lt;password&amp;gt;修改成你設置的賬號和密碼。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export const commentConfig: CommentConfig = {
  twikoo: {
    envId: &apos;這裏替換為你的 envId&apos;,
  },
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最後在終端輸入&lt;code&gt;pnpm dev&lt;/code&gt;即可本地預覽，enjoy!&lt;/p&gt;
</content:encoded></item></channel></rss>