發表文章

目前顯示的是 5月, 2025的文章

GAN研究筆記(1)_自編碼器(Auto-Encoder)跟變分自編碼器(VAE)

圖片
  自編碼器(Auto-Encoder) 是一種神經網路又可稱其為重建(構)模型,本身並不算生成模型。 使用自身的高階特徵編碼自己,壓縮成一個高階向量。是透過壓縮與還原圖像,來重建與輸入圖像相似圖像的模型。 其網路架構分為三部分:輸入層、隱藏層、輸出層。輸入層與輸出層通常具有相同維度,而隱藏層的維度會被設為比輸入層更小,從而達成資訊壓縮。 輸入層到隱藏層這部分稱為 編碼器(Encoder),負責將圖像壓縮為低維表示。 隨後從隱藏層到輸出層的部分稱為 解碼器(Decoder),其目的是還原圖像,使其盡量接近輸入圖像。 目標是使用稀疏的高階特徵重新組合來重構自己。 其輸入、輸出是一致的。是一種數據壓縮算法,其中數據的壓縮和解壓縮函數是和數據本身相關、有損的,從樣本中自動學習。 屬於無監督式學習。因為會和訓練數據息息相關,只能重構那些與壓縮訓練數據類似的數據。但本身要求輸入、輸出愈相近愈好這個目標,算監督式學習特性。 https://medium.com/ai-academy-taiwan/what-are-autoencoders-175b474d74d1 主要流程:Original Input -> Encoder -> Compressed -> Decoder -> Reconstructed input Encoder(編碼器):把圖像給編碼成向量 Decoder(解碼器/生成器):透過接收一個向量來產生一張圖像。 損失函數(Loss Function):透過比較輸入圖像與重建圖像的像素差異(逐像素)來計算損失, 此損失稱為「重建誤差(Reconstruction Loss)」,可用以下公式表示: 此公式中的 Xi為網路的輸入,Yi  為輸出。 該損失函數透過計算這兩者之間的交叉熵,來求出需最小化的參數。 輸出值的決定公式: 此處的參數如下: 𝑊1,𝑏1:編碼器的權重與偏差 𝑊2,𝑏2:解碼器的權重與偏差 簡略地可記作: 自編碼器設計方式 Step1.搭建Encoder Step2.搭建Decoder Step3.定義損失函數->重構圖片越接近原本圖片越好 十分不靈活,會受限於已知的數據樣本,無法給定隨機圖片的隨機向量。 自編碼器應用 1.數據去噪音 2.降維度 3.生成圖片 自動編碼器透過圖像壓縮的過程,...

Akamai 以約 9 億美元正式收購 Linode

圖片
  https://hosthum.com/posts/akamai-to-acquire-linode/ Linode: https://www.linode.com/lp/free-credit-100-5000 成立於 2003 年,是一家專注於提供 VPS(虛擬私有伺服器)和雲端運算服務的公司。 主打簡單易用、價格透明,是開發者與中小企業常用的雲平台替代 AWS、GCP 等。 Akamai Technologies: https://www.akamai.com/ 成立於 1998 年,是全球知名的 CDN(內容傳遞網路)與網路安全解決方案提供商。 專長於分散式架構、DDoS 防護、邊緣運算等。 Linode 是 Akamai 的子公司 2022 年: Akamai 以約 9 億美元正式收購 Linode,整合成為 Akamai 的雲端計算服務部門。 Linode 原為開發者友好的 VPS 提供商,現在是 Akamai Connected Cloud 的一部分。 Linode 品牌在初期保留,但已逐步整併進 Akamai Cloud。 如果是要找便宜的 VPS 或搭建 Side Project 平台 (例如 Hadoop、Node.js、Python API),Linode(Akamai) 依然是值得考慮的平台,尤其提供: $5 美金 / 月的共享 CPU 方案(1 核 + 1GB RAM) 支援自建 Spark/Hadoop cluster(較適合技術熟練者)

Render 平台簡介

圖片
Render 是一個現代化的雲端應用平台,提供開發者和團隊一站式的部署、管理與擴展解決方案。無論是靜態網站、動態 Web 應用、背景工作甚至是資料庫服務,Render 都能簡化部署流程,讓開發者專注於開發本身。 Render租用平台具有以下幾個特性 每個工作區每月提供 750 小時 的免費執行時間 若服務在 15 分鐘 內無任何流量,將自動進入休眠狀態。 每個工作區僅允許 一個免費的 Postgres 資料庫 和 一個免費的 Key Value 實體同時運行。 每個帳號(或 workspace)最多只能建立一個免費 PostgreSQL 資料庫。如需更多資料庫,需升級為付費方案。此外,免費資料庫最多提供 256 MB 的儲存容量。 免費 Postgres 不支援持久性資料儲存擴充與備份策略。若需進行備份、快照、還原,需改為付費方案。 免費版資料庫僅限於公開網路存取,不支援私有服務之間的資料庫連線(Private Networking)。也無高可用性(HA)與備援機制。若資料庫掛掉或 Render 有中斷,可能會有資料遺失風險。 支援程式語言:Node.js, Python, Ruby, Go, PHP 免費專案每天會「休眠」數小時,需要流量活躍來保持活躍。 免費方案每月包含一定的 出站頻寬 和 建置管線時間。超過配額後,若未新增付款方式,服務將被暫停。若已新增付款方式,將依據超出部分收費(例如,額外的 100GB 頻寬收費 $30 美元) 。 https://render.com/pricing 若要進行商業部署、API 平台支援或資料分析專案,建議改用付費的 Postgres Plus 方案,享有更穩定、容量更大(起始為 256MB → 10GB 起跳)、支援備份與自訂網域連線。 Render Postgres Services 免費方案下的 Web 服務配置為 0.1 vCPU 和 512 MB RAM。 Deploy for Free render.com/docs/free Ref: Add Render's free web services https://github.com/cloudcommunity/Cloud-Free-Tier-Comparison/issues/48 https://render.com/docs/disks htt...

LLM及LangChain開發筆記(14)_對話記憶(Conversational Memory):介紹與簡介

圖片
  記憶機制簡介 ConversationBufferMemory :儲存完整的對話歷史 ConversationSummaryBufferMemory :使用摘要方式儲存對話歷史 ConversationBufferWindowMemory :僅保留最後幾輪對話 ConversationalTokenBufferMemory :限制儲存的 Token 數量 範例程式 import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file openai.api_key = os.getenv( 'OPENAI_API_KEY' ) from langchain.chat_models import ChatOpenAI chat = ChatOpenAI(model_name= "gpt-3.5-turbo" , temperature= 0.0 ) from langchain.callbacks import get_openai_callback def count_tokens (chain, query): with get_openai_callback() as cb: result = chain.run(query) print (f 'Spent a total of {cb.total_tokens} tokens' ) return result from langchain.chains import ConversationChain conversation_buf = ConversationChain( llm=chat, ) print (conversation_buf.prompt.template) from langchain.memory import ConversationBufferMemory memory=ConversationBuffe...

LLM及LangChain開發筆記(13)_輸出解析器(Output Parser)

圖片
  原始輸入(customer_review)內容: customer_review = """ 這個吹風機非常棒。它有四個檔位:輕柔模式、輕微微風、大風城市和龍捲風。 它在兩天內送到,正好趕上我妻子的周年紀念禮物。我覺得我妻子非常喜歡它, 她感到無言以對。到目前為止,我是唯一在使用它, 我每隔一天上班前用它來為妻子吹頭髮。它的價格略高於其他吹風機, 但我認為為了額外的功能,這是值得的。 """ 預期的輸出 JSON: { "禮物" : true, "送貨天數" : "2" , "價格" : [ "它的價格略高於其他吹風機," , "但我認為為了額外的功能,這是值得的。" ] } "禮物" 由 我妻子的周年紀念禮物 判斷為 true "送貨天數" 由 它在兩天內送到 中的「兩天」提取為 "2" "價格" 將描述價格與價值的兩句話提取為一組列表 Step1.定義 JSON 輸出格式的 Schema(結構化回應欄位) 目的是讓大語言模型(如 GPT)依照明確規範輸出 JSON 格式的資訊。 常用於資訊擷取(Information Extraction)任務。 匯入必要模組: ResponseSchema:定義每個欄位的名稱與描述。 StructuredOutputParser:根據這些 Schema 解析模型輸出。 ChatPromptTemplate:製作提示詞。 步驟1程式 from langchain.output_parsers import ResponseSchema from langchain.output_parsers import StructuredOutputParser from langchain.prompts.chat import ChatPromptTemplate gift_schema = ResponseSchema( name= "禮物" , desc...

LLM及LangChain開發筆記(12)_聊天模型的PromptTemplate_ChatPromptTemplate

圖片
  https://livebook.manning.com/book/langchain-in-action/chapter-1/v-3/49 範例1.HumanMessagePromptTemplate 根據指定主題與風格,自動生成一首詩。 import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file openai.api_key = os.getenv( 'OPENAI_API_KEY' ) from langchain.chat_models import ChatOpenAI chat = ChatOpenAI(model_name= "gpt-3.5-turbo" , temperature= 0.0 ) from langchain.prompts import ChatPromptTemplate, HumanMessagePromptTemplate human_template = HumanMessagePromptTemplate.from_template( """ 請寫首詩,按以下主題與風格: 主題:{theme} 風格:{style} """ ) chat_prompt = ChatPromptTemplate.from_messages([human_template]) theme = "描述大海的美麗" style = "用唐代的七言詩,共四句,每句七個字" chat_prompt_value = chat_prompt.format_prompt( theme=theme, style = style ) response = chat.invoke(chat_prompt_value.to_messages()) print (response.content) 建立 Prompt 模板(HumanMessage) 使用者輸入的 pr...

LLM及LangChain開發筆記(11)_文本語言模型LLMs的FewShotPromptTemplate

圖片
透過給模型幾個示範範例,讓它更好地模仿這些範例風格來回答新問題。 https://python.langchain.com/api_reference/core/prompts/langchain_core.prompts.few_shot.FewShotPromptTemplate.html 示範程式1.實作一個 few-shot learning 對話提示系統。 使用 LangChain + OpenAI GPT 模型(gpt-3.5-turbo-instruct) 透過 few-shot learning(少樣本學習) 方式,讓 GPT 模型根據兩個範例學會風格與語氣,並回答新的問題。 import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file openai.api_key = os.getenv( 'OPENAI_API_KEY' ) from langchain import FewShotPromptTemplate, PromptTemplate from langchain.llms import OpenAI llm = OpenAI(model_name= "gpt-3.5-turbo-instruct" ,temperature= 0.0 ,max_tokens= 1024 ) # create our examples examples = [ { "query" : "你好嗎?" , "answer" : "還不錯,但有時我們仍會抱怨。" }, { "query" : "現在幾點了?" , "answer" : "是時候買支手錶了。" } ] # create a example template example_temp...

LLM及LangChain開發筆記(10)_文本語言模型LLMs的PromptTemplate

圖片
在過去幾篇章中探討到關於prompt技巧,至於所謂PromptTemplate主要聚焦在如何去重複運用提示詞,並將其抽離成可以重複使用的模板。類似所謂「字串插值」(String interpolation)。 傳統透過python f string去做format字串傳參數的寫法較不靈活。 https://python.langchain.com/api_reference/core/prompts/langchain_core.prompts.prompt.PromptTemplate.html 示範程式1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file openai.api_key = os.getenv( 'OPENAI_API_KEY' ) from langchain.llms import OpenAI llm = OpenAI(model_name= "gpt-3.5-turbo-instruct" ,max_tokens= 1024 ) from langchain import PromptTemplate template = """ 請將由三個反引號分隔的文本內容用一句話進行概括 ```{text}``` """ prompt_template = PromptTemplate( input_variables = [ "text" ], template = template ) print ( prompt_template.format( text = "這是一個神奇的大模型,可以像人一樣對話" ) ) 示範程式2 1 2 3 4 5 ...

LLM及LangChain開發筆記(9)_LangChain對接OpenAI_OpenAI與ChatOpenAI兩種開發API使用

圖片
Model I/O Module https://upstash.com/blog/langchain-explained https://developer.aliyun.com/article/1218081 LangChain is a framework for developing applications powered by large language models (LLMs). 在LLM及LangChain開發筆記(3)篇章時,我們已安裝 LangChain 0.3 版本 pip install langchain==0.3.0 這邊可以透過pip list去檢閱目前版本,可發現其他langchain相依套件也一併都安裝下來。 LangChain 0.3x 以後的版本結構大改,llms.OpenAI 被拆分移到 langchain_community 套件中。 還要補安裝langchain_community https://api.python.langchain.com/en/latest/community_api_reference.html https://python.langchain.com/api_reference/community/index.html pip install langchain-community 記得先執行以下套件下載 pip install langchain==0.3.0 pip install openai==0.28 pip install langchain-community pip install langchain-openai==0.3.0 示範程式-1 LLM的OpenAI 開發API使用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file openai.api_key = os.getenv( 'OPENAI_API_KEY' ) from langchain.l...