Another Year, yet Another Life Update!
嗨嗨!距離上次生活更新已經過一年了(撒花)! 這一年發生了許多大大小小的事,感覺是時候再來個近況分享,也藉機對自己這一年做個總結(也許可以變成每年傳統?)。 關於碩士去年八月,我順利畢業了!我現在是臺大資工碩士了(驕傲)!還好後來在做實驗跟寫論文的過程中都很順利,運氣很不錯,也謝謝許永真教授的指導,讓我可以如期順利畢業~ 想了解更多我的碩論可以參考: 我的碩士論文 - AGTree:基於注意力引導的視覺概念分解 關於工作上次寫生活更新時,我還在 Appier 實習;現在我已經在 PicCollage 擔任正職了,職位是 Machine Learning Engineer。目前是我的第二個月(雖然中間隔了四個月當兵 XD),一切都很開心,不論是公司風氣或是工作內容都是我喜歡的,而且 PicCollage 是個很活潑有趣的公司,待在這邊很快樂(感謝當初有認真拼一把的自己)! 關於我找工作的峰迴路轉,可以參考以下: 2025 年科技業正職預聘/研替面試心得(TSMC, Google, NVIDIA, Synology, MediaTek, Perfect Corp., ...
Managing Environment with UV
This is a note I wrote for my job about managing python environment with UV. What is UV? Github: https://github.com/astral-sh/uv Doc: https://docs.astral.sh/uv/ UV is just like poetry, but with powerful management on python version.Comparison with poetry: https://blog.kyomind.tw/introducing-uv/. Installing Trio‘s dependencies with a warm cache. Installation12345678910# Installing via pip is possible but not recommended.# On macOS and Linux.curl -LsSf https://astral.sh/uv/install.sh | sh# Upd...
My Interview Experience with PicCollage
前言上次說到我找正職的故事,但其實還有後續。過了幾個月之後,不安分的我又去面試了 PicCollage 這間公司。這間也跟玩美移動類似,是做圖片相關的 App,我之前丟過好幾次他們的實習,但都是沒下文或直接感謝信。 起因是三月多去逛就業博覽會的時候,剛好遇到認識的朋友在裡面工作,就跟他聊了一下,畢竟我一直對這間公司很感興趣,雖然後來覺得有點懶所以沒丟。但過了一陣子之後又覺得很心動,不挑戰一下有點可惜,就去麻煩我朋友內推。又隔了一陣子他看到訊息之後,到五月初總算成功推到了,雖然時程上算是小晚,但想說我沒啥損失就還是面面看。 面試過程應徵職位:Machine Learning Engineer部門介紹:PicCollage MLAD - Medium 時程: 5/2 朋友幫忙內推完成 5/7 主管詢問畢業時間 5/20 收到一面邀請 5/27 ML Head + HR 線上一面 6/5 Engineer 線上二面 6/17 Engineer 線上三面 6/26 Engineer Director 線上四面 7...
我的碩士論文 - AGTree:基於注意力引導的視覺概念分解
Author國立臺灣大學 資訊工程學系研究所 R12 陳韋傑 Jack Chen Professors國立臺灣大學 資訊工程學系 許永真教授國立臺灣大學 資訊工程學系 鄭文皇教授長庚大學 人工智慧學系 楊智淵助理教授 AGTreeAGTree:基於注意力引導的視覺概念分解(AGTree: Attention Guided Visual Concept Decomposition) 摘要在設計嶄新的視覺概念時,設計師經常從既有的想法中汲取靈感,藉由重新組合各種元素,以創造出獨特且原創的作品。隨著文字轉圖像(Text-to-Image, T2I)模型的快速發展,機器現已能夠協助此一創作過程,特別是在分解複雜視覺概念並將其與現有概念重新組合方面。然而,現有的視覺概念分解方法通常依賴於多樣化的輸入圖像,當輸入圖像在視覺上過於相似時,這些方法往往難以將物體從顯著的背景中分離出來,導致所產出的結果難以理解或應用。 本研究揭示了被分解的視覺子概念與擴散模型中 U-Net 的交叉注意力 (cross-attention maps)之間的強烈關聯。基於此觀察,我們提出了一種新方法: AG...
2025 年科技業正職預聘/研替面試心得(TSMC, Google, NVIDIA, Synology, MediaTek, Perfect Corp., Appier)
前言每年的面試分享文,似乎已經默默的成為我的某種習慣了(還沒看過我之前文章的,可以參考 2023 跟 2024 的分享)。但今年比較不同的是,我要碩士畢業了!因此本篇分享會從以往的實習轉成正職,職位的部分我大多都是找 ML 相關為主。 面試紀錄 投遞履歷:7 家公司 面試邀請:6 家公司 Offer Get:2 家公司 TSMC應徵職位:沒分,統一丟備註:有研替時程: 8/30 EPO interview invitation 9/12 EPO interview 10/1 EPO Thank you 9/16? 收到 IT 副理電話聊天詢問面試意願 9/23? 沒收到後續,打電話回去問,他好像說他忘記,當天就收到面試邀請 10/15 收到 IT 另一個處約時間,想約同天但卡到 10/18 IT interview (AAPD) 10/25 IT interview (MLAD) 11/1 收到資歷查核 11/5 資歷查核送出,有問是否需要廠測,對方說去年有紀錄不用 11...
資料結構與演算法教學系列文 (11) - 最大子數列問題、背包問題、換錢問題
HackMD 完整版請點我 最大子數列問題 (Maximum Subarray Problem)最大子陣列問題是指在一個整數數列中,找出一段連續子陣列,使其元素總和最大。這是經典的動態規劃問題之一,常用於資料分析,如股價變動趨勢。 例子:給定一個陣列 [-2, -3, 4, -1, -2, 1, 5, -3],找出總和最大的子陣列。 解答:最大子陣列為 [4, -1, -2, 1, 5],其總和為 7。 Kadane’s AlgorithmKadane’s Algorithm 是一種專門用來解決此問題的演算法,可在線性時間內計算完成。要了解 Kadane’s Algorithm,讓我們從暴力法一步一步來看。 滴滴面试手撕算法题-kadane算法 暴力法:遍歷全部連續子陣列最簡單的方式,就是窮舉所有可能的連續子陣列,並計算每一個子陣列的總和,再從中找出最大值。 12345678def maxSubArrayBF(nums): max_sum = nums[0] n = len(nums) for i in range(n): for j i...
資料結構與演算法教學系列文 (10) - 差分陣列、單調堆疊/佇列
HackMD 完整版請點我 差分陣列(Difference Array) 差分陣列是一種快速處理區間更新的技巧,特別適用於頻繁對陣列特定區間進行加減的情境,其基於前綴和(Prefix Sum)的概念來輔助實現。 其核心概念是透過維護一個輔助陣列 diff,來記錄原陣列的數值變化,使得區間的加減可以在 O(1) 時間內完成,而最終結果則可透過前綴和的技巧來計算。 輔助陣列的建立輔助陣列 diff 的計算方法為:diff[0] = nums[0]diff[i] = nums[i] - nums[i-1] (i > 0) 以上圖來看,原陣列 nums 是 [8, 2, 6, 3, 1]:diff[0] = 8diff[1] = nums[1] - nums[0] = 8 - 2 = -6diff[2] = nums[2] - nums[1] = 6 - 2 = 4…diff = [8, -6, 4, -3, -2] 有注意到嗎?每個 diff 記錄的是「這個位置與上個位置的差異...
資料結構與演算法教學系列文 (9) - 圖的進階議題
HackMD 完整版請點我 圖的進階議題(Advanced Topic on Graph)最短路徑(Shortest Path)最短路徑問題(Shortest Path Problem)是圖論中的一個重要課題,目的是尋找從一個起始節點到其他節點的最短路徑。相關的應用像是地圖中的導航系統、網路路由選擇等等,背後都是使用最短路徑的演算法。 path - 演算法筆記 戴克斯特拉演算法(Dijkstra’s Algorithm) 戴克斯特拉演算法是一種廣泛使用的方法,特別適用於權重非負的有向圖和無向圖,通過不斷選擇當前距離最小的未訪問節點,並更新其所有相鄰節點的最短距離,來尋找從起始節點到其他所有節點的最短路徑。 特別要注意的是,若存在負權重的邊,則戴克斯特拉演算法就不再適用。為什麼?讓我們看看以下的圖:你想到原因了嗎?在這張圖中,使用戴克斯特拉演算法會發生什麼事情? 基礎演算法系列 — Graph 資料結構與 Dijkstra’s Algorithm Visualization of Above Example Bellman–Ford Algorithm相較於戴克斯特拉演算法...
資料結構與演算法教學系列文 (8) 字串比對、位元運算、雙重指標
HackMD 完整版請點我 字串比對(String Matching)KMP 演算法 KMP 演算法是一種用於字串搜尋的高效方法。透過建立部分配對表(最長的相同前後綴),可以快速定位搜尋字串中的可能配對位置,減少不必要的重複比較,從而加速搜尋過程。 KMP 演算法其實相對複雜且較難實作,我個人認為有大概理解概念就好,實際上也很少遇到需要直接實作該演算法的情境。 初學者學 KMP 演算法 補充:KMP algorithm,從自學到放棄 (1)補充:KMP algorithm,從自學到放棄 (2)補充:演算法筆記:substring補充:KMP Visualization Leetcode 28. Find the Index of the First Occurrence in a String 位元運算(Bit Manipulation) Bit manipulation 是在電腦中用「位元」(bit)來進行操作的技巧,這種技巧常在程式設計競賽或像 Leetcode 這樣的題目中出現。位元是電腦中最基本的單位,由 0 或 1 組成,這跟開關一樣,只有開或關的狀態。這些 ...
資料結構與演算法教學系列文 (7) - 分治法、動態規劃、前綴和
HackMD 完整版請點我 分治法(Divide-and-Conquer) Divide-and-Conquer又稱為分治法。其中 Divide 指的是將一個較大的問題不斷切割成小問題。而 Conquer 是當最後切割成的小問題簡單到可以直接解決,就可以組合成大問題的答案。在程式語言中時常都會用到分治法的觀念,並結合遞迴的概念求解。 Source: 分而治之法與遞迴關係 還記得之前教過的 Merge Sort 嗎?(合併排序法:將陣列不斷細分,再將細分後的結果兩兩合併。)其實 Merge Sort 的精神本質上就是 Divide-and-Conquer! 【舌尖上的演算法】Day15 – Divide and Conquer - Merge Sort Leetcode 108. Convert Sorted Array to Binary Search Tree 148. Sort List 動態規劃(Dynamic Programming) Dynamic Programming = Divide-and-Conquer + Memoization 動態規...






