發表文章

特徵類型及常見特徵工程手法

圖片
https://www.geeksforgeeks.org/machine-learning/what-is-feature-engineering/ 在機器學習(深度學習)中關鍵絕大部分在 特徵工程 而特徵工程關鍵則在所謂 領域知識 。 特徵類型 數值型:有不同轉換方式,函數、條件式子皆可。(舉例:坪數、年齡、身高、體重) 類別型:一種類別對應一種數值分數。(舉例:行政區、性別、花種類、....) 二元特徵:僅True(1)/False(0)兩種數值特徵,可當作類別型或數值型 排序型特徵: 介於數值型與類別型特徵之間,類似考試的百分等級(0~99)。 有名次、大小關係,也可能並非連續數字。 通常當作數值型特徵處裡,若作為類別型特徵就會失去可排序特性。 時間型特徵: 若取總秒數可轉為數值型特徵,但會失去週期特徵(月、季、星期) 直接用本身可做為類別型特徵,但會失去排序依據資訊,類別數量也過大無意義。 常見特徵工程手法 特徵工程是將現實(可能非數值)資料轉換為對應數值型分數的過程 捨棄或調整離群值 : 若只有少數幾筆資料和其他數值差異極大,則無法標準化處理。 一種做法是直接移除,會挖一個洞。(若離群值數量真的很少的話建議用此做法) 一種做法是將離群值進行調整 類別型資料編碼 標籤編碼(Label Encoding): 類似編列流水號概念,依序將新出現的類別編新代碼。 已出現類別編上已使用的代碼,缺點是該數值大小順序皆無意義。 假設我們有一個「顏色」變數,將 red 指定為 0 、 green 為 1 、 blue 為 2 。 獨熱編碼(One Hot Encoding): 為改良數字大小無意義問題,將不同類別分別獨立為一欄。 缺點是當類別數量越多時,會需要較大記憶空間與計算耗時成本。 假設我們有一個「顏色」變數,其具有三個標籤 red 、 blue 和 green 。為了讓機器學習算法能夠處理,這些標籤都必須轉換為數值形式。透過創建三個新欄位(每個欄位對應一個標籤)來實現,其中對應標籤的欄位使用 1 ,其他顏色欄位則使用 0 。 時間特徵分解:時間欄位該怎麼做處理、劃分呢(週期循環特徵) 最直覺方法就是依照原始意義來分欄處理,或加上第幾週or星期幾。 但是某些欄位(例如:時分秒)和目標值關係極低,是否有更有意義的特徵呢? 可透過週其概念來合成一些重要特徵 聯想有哪幾種...

Windows作業系統環境下安裝Ruby_Wikipedia語料庫截取純文本wp2txt_WikiExtractor

圖片
Ruby預設環境會有類似node.js的npm install的cli  (定位就跟微軟開發者在用的nuget差不多、或python的pip install....) 叫做gem 相關Ruby開源套件貢獻者會在此網站平台做釋出 https://rubygems.org/ 在一些自然語言語料庫收集任務最為知名的就是維基百科 https://dumps.wikimedia.org/ 當然要注意的是wikimedia有對下載者進行了速率限制,並將每個 IP 位址的連線數上限設為 3 個。目的是確保每個人都能以合理的下載速度存取檔案。 在這邊要從官方網站的Database backup dumps進去 也就是所有跨語言的公開WIKI媒體資料完整副本,以嵌入 XML 的維基文本來源檔案和元資料形式提供。 官方有釋出dumps出來的文本壓縮檔無法直接解析需要特殊前處理 https://dumps.wikimedia.org/backup-index.html 看 Wikipedia 網域抓語言代碼: https://en.wikipedia.org/ → enwiki https://zh.wikipedia.org/ → zhwiki https://ja.wikipedia.org/ → jawiki 比方說 日本語言的最新dumps資料網址 https://dumps.wikimedia.org/jawiki/latest/ 英文語言的最新dumps資料網址 https://dumps.wikimedia.org/enwiki/latest/ https://dumps.wikimedia.org/enwiki/20260201/ 中文語言的最新dumps資料網址 https://dumps.wikimedia.org/zhwiki/latest/ https://dumps.wikimedia.org/zhwiki/20260201/ 舉例這邊針對英文和中文各自bz2做下載 enwiki-latest-pages-articles.xml.bz2 zhwiki-latest-pages-articles.xml.bz2 wiki中文語料庫僅3GB相較英文WIKI的23.2G來的小很多 Solution1. wp2txt 剛好涉及到裝wp2txt https://...

[論文筆記]Skip-Thought Vectors

圖片
https://arxiv.org/pdf/1506.06726 Skip-Thoughts  使用跳躍思維模型 與 word2vec 相當相似是一種自然語言處理模型,但不是一次將個別單詞轉換為向量。 取而代之,將整個句子作為單位轉換為向量。 主要理論是去取得一個自然語言語料庫,並找出哪些句子傾向於彼此相鄰出現,然後訓練一個神經網路,使其能預測哪些句子預期會出現在任何其他句子之前或之後。 研究問題 這項研究試圖解決的核心問題是:如何在這個缺乏標註數據的狀況下,學習出高品質、通用且分佈式的句子表示向量(Distributed Sentence Representations)? 在當時,雖然詞向量(Word Vectors)已經能透過非監督學習取得很好的效果,但句子向量的學習大多仍依賴「監督式任務」(Supervised tasks),例如情感分析或邏輯推理 。這導致模型學習到的特徵往往只針對特定任務有效,缺乏通用性。雖然 Paragraph Vector 是一種非監督替代方案,但它在測試階段需要進行推論(inference)來計算新句子的向量,效率較低 。作者希望創造一種「隨取隨用」(off-the-shelf)的編碼器,能將任何句子映射成向量,並直接應用於各種下游任務 研究背景 此篇論文研究的靈感主要來自於詞嵌入模型, 從詞到句子: 既然 Skip-gram 可以透過預測上下文單字來學習詞義,那麼利用書籍中連貫的文本結構,一個句子應該也能透過預測「前一句」和「後一句」來學習句義 。 現有技術侷限: 當時主流的句子組合方法(Composition methods)如遞歸神經網絡(Recursive NN)或卷積網絡(CNN),通常需要依賴類別標籤進行倒傳遞更新,這限制了它們的推廣能力 。 目標設定: 作者決定不專注於設計新的組合運算符(composition operator),而是提出一個新的目標函數(objective function),讓任何編碼器都能透過此目標學習到通用的語義 。 模型架構 Skip-Thought 模型採用了經典的 Encoder-Decoder架構 核心機制: 給定一個連續的句子三元組 ( s i − 1 , s i , s i + 1 ) ,模型將中間的句子 s i 編碼,並試圖重構前一句 s i − 1 和後一句 ...

啟用Azure學生方案教學步驟

圖片
  填寫學校信箱然後接收驗證 https://azure.microsoft.com/zh-tw/free/students https://it.nycu.edu.tw/it/ch/app/artwebsite/view?module=artwebsite&id=220&serno=40e18628-1dab-411b-8dc0-aab0905d38b2 登入outlook (透過m365的信箱帳號登入) 確認信有收到點連結啟用驗證學生身分結束這一回合 此時導入的預設首頁要確認如果概觀仍呈現如下圖,代表你還沒真正啟用100美元扣打 以下是正式有起用的概觀首頁預覽畫面 此外預設會產生Azure for Students的訂用戶

Decoding Methods for Language Models_Exhaustive search,Greedy Search與Beam Search比較

圖片
https://medium.com/@shravankoninti/decoding-strategies-of-all-decoder-only-models-gpt-631faa4c449a 語言模型不是只會「算機率」,真正影響輸出品質的是「怎麼選字」基本上分兩模式 Deterministic(確定性) 優點:可重現、偏「安全 / 標準答案」,常被應用在法規 / 技術文件。 缺點:容易重複、呆板,生成式任務中不夠生動。 Stochastic(隨機性) 優點:多樣有創意、輸出不固定 缺點:可能胡說、不一致 Sequence-to-Sequence Model for Machine Translation 諸多 NLP 應用(例如機器翻譯、聊天機器人、文本摘要或當前很夯的語言模型)都會產生文字作為輸出。另外,關於圖片說明(image captioning)或自動語音辨識(即語音轉文字)等應用也會輸出文字。所有這些應用在產生最終輸出的步驟中,都會使用以下幾種常用的演算法。 以下探討的針對Deterministic模式做比較 1.Exhaustive search(窮舉搜尋) 一種透過確認所有可能的狀況來尋找答案的方法。 窮舉所有可能的輸出序列,並在探索所有可能情況的同時,僅保留符合要求的結果。 保證能找到解但是效率不高 假設我們要用詞彙表 { cold, coffee, I , like , water, <stop>} 生成一個 5 個詞的序列。 窮舉搜尋所有可能序列及其對應機率,並輸出機率最高的序列。 I like cold water I like cold coffee coffee coffee coffee coffee I like I like coffee like cold coffee ..... 所以對於每個句子的輸出,其機率將會是 P(x1, x2, x3,…..xn) = P(x1).P(x2/x1), ……….., P(xn/x1, x2, ……xn-1) 我們會在解碼過程中找到所有可能的序列。在每個時間步都會傳入所有的詞彙。 如果其中一個範例輸入序列是「I like cold coffee <stop>」 上述序列的總機率將等於 P(I) * P(like/I)*P(cold/I,like)*P(coffee...