棒棒生

讓學習變成一種習慣


  • 首頁

  • 分類

  • 關於

  • 歸檔

  • 標籤

[徵才] AI 演算法夥伴: 與我們一起打造次世代語音技術!

置顶 | 發表於 2025-08-18 | 分類於 雜

是的! 我們徵求工作夥伴! (深度學習算法開發單位, 新竹縣竹北市, 地址: 🗺️)

公司是意騰科技 intelliGo 成立於2016年, 一家專精於語音AI領域的公司, 並於 2025 年台股上市 (代號: 7749). 已有許多 AI 語音的解決方案, 一個代表例子為應用於 🎮 Switch2 GameChat 的方案 [新聞].
我們 (算法開發) 團隊正在招聘深度學習開發人員, 如果您願意與我們一起開發次世代語音技術, 打造影響全球使用者的功能, 別猶豫了! 請寄送您的簡歷與我聯繫: ✉️ bobondemon[at]gmail[dot]com

您將加入的團隊經歷過許多從 0 到 1 的新功能開發 (有些是業界首創), 同時也具有 1 到 100 的 scale up 產品經驗. 團隊文化注重每個人的成長, 並鼓勵鑽研與思辨, 而非僅求速成, 你能與一群同樣對技術有執著追求的夥伴共同成長!

我們正在尋找這樣的你/妳 (非語音領域的夥伴也沒問題喔 🙂)
 $\circ$ 心態上: 樂於接受新題目的挑戰, 自我驅動力強 (對新技術或進步上有”饑渴感”), 熱衷於鑽研技術和深度思考 (注重理解透徹)
 $\circ$ 本職學能上: 熟悉深度學習, 並有良好的數學能力, .e.g. 線性代數、機率、微積分、最佳化方法等, 能獨立閱讀論文了解某一問題的 SoTA 作法, 並快速實驗驗證想法, 同時持續迭代開發
 $\circ$ 專案上: 能從客戶角度思考什麼才是成功的應用 (有時候複雜厲害的作法不一定打到客戶痛點)
加入我們能完整經歷從 AI 模型的誕生到部署, 再到客戶回饋打磨的完整 loop 過程.
詳細 Job Descriptions 如下 (別害怕別猶豫, 就是你/妳了!)

閱讀全文 »

筆記 PyTorch FX 的 Graph Node 一些基礎概念

發表於 2025-07-29 | 分類於 ML

Computational graph 相當於 NN 的一種 IR (intermediate representation) 表達方式.
在 PyTorch 的 nn.Module 裡通常由 user 來定義 forward 函式藉此來表達這些 ops 怎麼關聯何其執行順序.
但在 torch.fx 把 NN 改由 Graph 來定義該怎麼 forward. 精確來說, 一個 GraphModule 包含了原本的 nn.Module 之外, 還包含了一個 Graph 物件, 並且Module 裡的 forward 函式改成由 Graph 物件來 ”自動生成”.
這樣做有許多好處, 例如可以自由地對 Graph 修改後, 再重新產生 forward. 更多請參考官方文件說明.

例如一些操作範例: [Replace one op], [Conv/Batch Norm fusion], [replace_pattern: Basic usage], [Quantization], [Invert Transformation]

當我在看 Replace one op 的時候, codes 雖然非常短, 但其實我產生了很多底層 graph 操作的疑問.
因此仔細對照 source codes 理解後特別紀錄一下.
相信對 Graph, Node, 和底層 fx 怎麼運作會有初步比較好的理解.

閱讀全文 »

不要逼 Attention 選擇, 留個出口吧

發表於 2025-07-09 | 分類於 ML

我們在看一些 attention 有時會看到會將 key 和 value ($K,V$) 各自 padding 一個 zero vector 的 token embedding. 如下圖所示 初次看到可能會很疑惑, 為啥要多 padding zero vectors? 本文就來解釋一下原因.
但首先故事要先回到 Transformer 本身
以下一些投影片內容取自 Song Han 課程投影片

閱讀全文 »

神經網路鍊金術之高手心法

發表於 2025-07-08 | 分類於 ML

這裡指的 “高手” 來自 Google DeepMind 的科學家 Sander Dieleman [blog], 而他的工作有多大影響力請自行查看 [google scholar] 就會知道.
這是筆者參加 ACDL 2025 MLSS 的其中一個 lecture, 也是私心認為最好的演講.
共分三堂, 前兩堂講了 diffusion models, 最後一堂講了他目前對神經網路訓練的各種心得/mindsets
能從這麼頂尖的 AI 科學家直接聽取經驗實屬難得!

有意思的是…這些經驗和目前主流技術, 有一些已經落實在自己的工作上, 這讓我感覺到自己確實也走在對的方向上.

但比較可惜的是過了一個月後才開始想要紀錄一下當時聽到的內容, 因此以下筆記或許會跟原本的意思有偏差, 對此情況則會融入自身的理解來記錄.
分四個部分 (擷取自演講投影片內容)

  1. Process: 點出該用什麼心態和工作流程, 來產生模型
  2. Architecture: 針對 NN backbone 設計的一些說明
  3. Training: 訓練 NN 的一些心得和技巧
  4. Miscellany: 其他各種雜項心得
閱讀全文 »

REINFORCE Estimator

發表於 2025-06-04 | 分類於 ML

某天忘記幹嘛了突然回想起之前學到的一個問題是有關 gradient 的 variance 很大, 使得 gradient descent 訓練不夠穩定.
不過可以利用扣掉一個 bias 或是使用 re-parameterization trick 來大幅降低 variance 解決此問題.

想了很久忘了在哪邊…縱使翻自己的 blog 筆記有時也沒查到很全面的資訊.
所以就開始跟 ChatGPT 學習, 只能說 👏🏻 ChatGPT 完美!! 👏🏻

現在這個時代隨時都有一個上通天文下知地理的助手在你旁邊 (或許無法贏過專精該領域最頂尖的人類, 但作為輔助絕對稱得上稱職), 這在以前根本很難想像, 且也只是這短短幾年才發生的事情.
這麼棒的東西, 還不把它用爆嗎?

好了, 回到本篇文章, 以下除了開頭的問題設定, 以及有一段人工補充的段落, 其他都是 ChatGPT 寫的, 根本超方便.

閱讀全文 »

Convolution 與 BatchNorm 的融合大法:從推論、QAT 到 PyTorch 的加速

發表於 2025-05-04 | 分類於 ML

常見的 NN blocks: Convolution (Conv) —> Batch Normalization (BN) —> ReLU
這 3 個 OPs 在量化後 inference 的時候可以直接融合成一個 OP:
  - Conv —> BN 可以融合是因為 BN 可以視為一個 1x1 convolution, 所以兩者的 weights 可以合併
  - ReLU 可以合併是因為在 QAT 時, 可以被 fake quant 的 quantization parameter 處理掉

本文筆記 Conv+BN 的合併, 分 3 部分:
  - 先討論 inference 階段怎麼合併 (已經都 train 好的情況下) [來源]
  - 再來討論做 QAT 時, 怎麼插 fake quant 效果才會好 [來源]
  - 最後看看 PyTorch 怎麼實作, 更重要的是, 怎麼加速?

閱讀全文 »

Robbins-Monro Algorithm 和 Dvoretzky's Convergence Theorem 筆記

發表於 2025-05-02 | 分類於 Optimization

Stochastic Gradient Descent (SGD) 算法:

$$\begin{align*} \quad w_{k+1}=w_k-\alpha_k\nabla_wf(w_k,x_k) \end{align*}$$ 其中 $f$ 是要 minimized 的目標函數, $x_k$, $w_k$ 是 $k$-th iteration 的 data 和 weight.
以前在學的時候都會提到 step size $\alpha_k$ 有這樣一個神奇的條件:
$$\sum_{k=1}^\infty \alpha_k^2<\infty,\quad \sum_{k=1}^\infty \alpha_k=\infty;$$ 左邊的條件希望 step size 要愈來愈小, 而右邊的條件又說也不能太小.
聽起來就有點神奇, 不知道藏了什麼秘密在裡面.
直到許多年後, 在我學赵世钰老師的 RL 課程第 6 章的時候才解開了以前不懂的地方.

鄭重介紹 Robbins-Monro (RM) 算法!

RM 可說十分重要, 除了可以證明 SGD 是 RM 算法的一個 special case. (因此只要保證滿足 RM 收斂的條件, SGD 就會收斂)
同時 RL (強化學習) 裡經典的 Temporal Difference (TD), Q-Learning 等的方法也依賴 RM 算法的觀念.
所以 RM 算法可說是 RL 的基石之一! 知道 RM 算法還是相當有好處的.
以下特別筆記赵世钰老師的 RL 課程第 6 章 內容.

閱讀全文 »

愉快充實的學習旅程 (Prof. Jeffrey R. Chasnov 的課程)

發表於 2025-03-13 | 分類於 雜

故事的開始從想看懂生成式模型的 flow matching 方法.
搜尋一下需要的數學知識, 大概還需要補 ordinary/partial differential equations, vector calculus (Gauss divergence theorem, Continuity equation), numerical methods for solving PDEs.
這些知識正好就是 Coursera 這門專項課的內容: Mathematics for Engineers Specialization by Prof. Jeffrey R. Chasnov
用了四個月的時間很充實又愉快的學習了四門課程

好啦我承認也花了點上班時間來學習 😆, 主要假日盡量投入, 確實有點辛苦

說一下四門課的心得內容:

閱讀全文 »

筆記 Langevin Dynamics 和 Fokker-Planck Equation 推導

發表於 2024-11-12 | 分類於 ML

筆記來源 [DeepBayes2019]: Day 5, Lecture 3. Langevin dynamics for sampling and global optimization 前半小時. 非常精彩!

粒子 $x$ follow Langevin dynamics 的話 ($x’$ 為此時的位置, $x$ 為經過無窮小的時間, $dt$, 後的位置): $$x-x'=-\nabla U(x')dt+\sigma\sqrt{dt}\mathcal{N}(0,I)$$ 則 $x$ 隨時間的機率分布 $p_t(x)$ 會滿足 Fokker-Planck equation 這種 Stochastic Differential Equation (SDE) 的形式:
$$\frac{\partial }{\partial t}p_t(x)=\nabla p_t(x)^T\nabla U(x)+p_t(x)\text{div}\nabla U(x)+\frac{1}{2}\sigma^2\nabla^2p_t(x)$$ 其中 $\nabla^2$ 是 Laplacian operator, 定義是 $\nabla^2 f := \sum_i {(\partial^2f / \partial x_i^2})$, 而 $\text{div}$ 是 divergence 定義是 $\nabla^2 F := \sum_i {(\partial F_i / \partial x_i})$.
或這麼寫也可以 (用 $\text{div}(p\vec u)=\nabla p^T\vec u+p\text{div}(\vec u)$ 公式, 更多 divergence/curl 的微分[參考這, or YouTube]):
$$\frac{\partial }{\partial t}p_t(x)=\text{div}(p_t(x)\nabla U(x))+\frac{1}{2}\sigma^2\nabla^2p_t(x)$$ 而從 F-P equation 我們可以發現最後 $t\rightarrow\infty$ 時某種設定下會有 stationary 分佈.
而如果將要採樣的目標分佈 $p(x)$ 設定成這種 stationary 分佈的話.
由於是 stationary 表示就算繼續 follow Langevin dynamics 讓粒子 $x$ 移動 (更新), 更新後的值仍然滿足目標分佈 $p(x)$, 因此達到採樣效果!
而這也是 Denoising Diffusion Probabilistic Models (DDPM) 做採樣時的方法.

接著詳細記錄 Langevin dynamics, Fokker-Planck equation 推導, 以及 stationary 分佈和採樣方法.

如果讀者知道 Continuity equation 的話, 應該會發現與 F-P equation 非常相似. 它們的關聯可以參考 “Flow Matching for Generative Modeling” 論文的 Appendix D.

閱讀全文 »

嘗試理解 Flow Matching

發表於 2024-11-06 | 分類於 ML

接續上一篇: 讀 Flow Matching 前要先理解的東西 (建議先閱讀)

Flow matching 模型在時間 $t=0$ 的時候從常態分佈出發 $p_0(x)=\mathcal{N}(0,I)$, 隨著時間變化其 pdf, 例如時間 $t$ 時的 pdf 變化成為 $p_t(x)$, 直到時間 $t=1$ 時希望變成接近目標分佈 $q(x)$, 即希望 $p_1(x)\approx q(x)$.
概念是頭尾 pdf 確定後, 中間這無限多種可能的 $p_t(x)$ 變化經過作者的巧妙設定, 讓學 vector field $u_t(x)$ 變的可能! (不學 pdf 而是學 vector field)
結果就是用 NN 學到的 $u_t(x)$ 可以讓 pdf 從開頭的常態分佈一路變化到最後的資料目標分佈 $q(x)$.

閱讀全文 »
12…12
Chih-Sheng Chen

Chih-Sheng Chen

111 文章
5 分類
229 標籤
© 2025 Chih-Sheng Chen
由 Hexo 強力驅動
主題 - NexT.Mist
[object Object] [object Object]