節前,我們組織了一場算法崗技術&面試討論會,邀請了一些互聯網大廠同學、參加社招和校招面試的同學,針對大模型技術趨勢、大模型落地項目經驗分享、新手如何入門算法崗、該如何備戰、面試常考點分享等熱門話題進行了深入的討論。
今天我分享一位小伙伴,今年成功找到實習機會,面試題整理后分享給大家,希望對后續找工作的有所幫助。喜歡記得點贊、收藏、關注。更多技術交流&面經學習,可以加入我們。
自我介紹
今年某985研二,本文章主要記錄了本小菜研找實習的坎坷歷程。
1. 自我介紹
在自我介紹環節,我清晰地闡述了個人基本信息、教育背景、工作經歷和技能特長,展示了自信和溝通能力。
2. 技術問題
2.1 lora的矩陣怎么初始化?為什么要初始化為全0?
初始化時,矩陣 A 隨機高斯初始化,矩陣 B 初始化為0。之所以要這樣初始化的原因是,在初始階段這兩個矩陣相乘為0,可以保證在初始階段時,只有左邊的主干生效。然后 BA 還會乘以一個縮放因子 a/r, a 也由我們自己指定。
訓練的時候,預訓練的權重矩陣全部都是凍結的。
2.2 gpt源碼past_key_value是干啥的?
在GPT(Generative Pre-trained Transformer)中,past_key_value是用于存儲先前層的注意力權重的結構。在進行推理時,過去的注意力權重可以被重復使用,避免重復計算,提高效率。
2.3 gpt onebyone 每一層怎么輸入輸出?
在GPT One-by-One中,每一層的輸入是上一層的輸出。具體而言,輸入是一個序列的嵌入表示(通常是詞嵌入),并通過自注意力機制和前饋神經網絡進行處理,得到輸出序列的表示。
2.4 模型輸出的分布比較稀疏,怎么處理?
可以采用一些方法來處理模型輸出的分布稀疏,例如使用softmax函數的溫度參數調節來平滑輸出分布,或者引入正則化技術,如Dropout,以減少模型對特定類別的過度依賴。
2.5 kl散度的公式和kl散度與交叉熵的區別?
KL(Kullback-Leibler)散度衡量了兩個概率分布之間的差異。其公式為:
KL散度指的是相對熵,KL散度是兩個概率分布P和Q差別的非對稱性的度量。KL散度越小表示兩個分布越接近。也就是說KL散度是不對稱的,且KL散度的值是非負數。(也就是熵和交叉熵的差)
2.6 介紹一下 文本embedding方法?
文本嵌入(Text Embedding)是一種將自然語言文本數據轉換為連續向量空間中稠密向量的技術,在這個向量空間中,語義相似的詞或文本片段會擁有相近的向量表示。這種技術是現代自然語言處理(NLP)中的基石,它使得計算機可以理解和處理文本數據,并將其應用到諸如分類、聚類、檢索、翻譯、問答等多種下游任務。
以下是一些常見的文本嵌入方法:
-
Word2Vec:
- 包括CBOW(Continuous Bag-of-Words)和Skip-gram兩種模型,由Google在2013年提出。它們通過神經網絡學習詞語與其上下文之間的關系,生成固定長度的詞向量。
-
GloVe:
- GloVe(Global Vectors for Word Representation),由斯坦福大學提出,該方法基于全局詞頻統計信息構建詞共現矩陣,通過優化目標函數直接學習每個詞的向量表示,使得詞向量的點積近似于它們在語料庫中的共現概率。
-
FastText:
- 由Facebook AI Research開發,FastText在Word2Vec的基礎上增加了對字符級n-grams的考慮,尤其適合處理形態豐富的低資源語言以及未登錄詞的表示問題。
-
Paragraph Vector (Doc2Vec)
- 可以擴展到句子和段落級別,除了學習單詞向量外,還學習一個額外的“文檔向量”,能夠捕獲較長文本整體的語義特征。
-
Transformer-based Embeddings:
- 隨著Transformer架構的出現,如BERT(Bidirectional Encoder Representations from Transformers)、GPT(Generative Pretrained Transformer)及其后續版本,預訓練語言模型進一步提升了文本嵌入的質量。這些模型在大量無標簽文本上進行自監督訓練,得到的詞嵌入包含了豐富的上下文信息。
-
ELMo:
- ELMo(Embeddings from Language Models)利用雙向LSTM的語言模型上下文敏感地計算詞向量,詞的表示取決于其在句子中的具體上下文。
-
Sentence-BERT (SBERT)
對BERT等Transformer模型進行微調,使其可以直接生成句子級別的嵌入,特別適用于句子對齊、相似度計算等任務。
通過這些文本嵌入技術,原本離散的文本數據得以轉化為具有數學性質的向量表達,從而可以在機器學習和深度學習算法中更高效地處理和分析。隨著技術的發展,新的嵌入方法不斷涌現,且越來越適應大規模多語言和跨模態的應用場景。
2.7 chatgpt的reward model怎么來的,三階段?
ChatGPT模型的訓練過程中,確實涉及到了一個基于人類反饋強化學習(Reinforcement Learning from Human Feedback, RLHF)的三階段過程。以下是這個過程的一個概述:
- 預訓練(Pre-training)階段:
- 在這個階段,GPT模型通過無監督學習的方式在大規模文本數據集上進行訓練。該模型的目標是預測下一個詞語給定前面的詞語序列,從而學習語言模型的基本結構和模式。
- 獎勵模型訓練(Reward Model Training)階段:
-
預訓練后的模型會被用于生成大量針對各種提示的回答。
-
這些生成的回答會由人工標注員進行評估,并給出好壞或滿意度得分,形成一個帶有質量評分的數據集。
-
基于這些人工標注的數據,訓練一個獎勵模型(Reward Model),該模型可以預測對于任何給定的輸入和輸出對,人類用戶可能給予多大的滿意程度分數。
-
通過這種方式,獎勵模型能夠理解并量化哪些類型的回答更符合人類期望的標準。
- 強化學習微調(Fine-tuning with Reinforcement Learning)階段:
-
使用訓練好的獎勵模型作為指導信號,將預訓練模型與強化學習算法結合,對模型進行微調(fine-tuning)。
-
模型現在以強化學習的方式進一步訓練,目標是在生成響應時最大化來自獎勵模型的預期獎勵,也就是得到更高的滿意度分數。
-
通過迭代優化,ChatGPT模型逐漸學會根據上下文生成更加準確、有用且合乎倫理道德的回答。
最終,經過這三階段訓練流程,ChatGPT不僅具備了強大的語言生成能力,還能夠更好地理解和適應人類對話的需求,提供更為高質量的人工智能交互體驗。
3. Leetcode 題
287. 尋找重復數
- 題目內容
給定一個包含 n + 1 個整數的數組 nums ,其數字都在 [1, n] 范圍內(包括 1 和 n),可知至少存在一個重復的整數。
假設 nums 只有 一個重復的整數 ,返回 這個重復的數 。
你設計的解決方案必須 不修改 數組 nums 且只用常量級 O(1) 的額外空間。
示例 1:
輸入:nums = [1,3,4,2,2]
輸出:2
示例 2:
輸入:nums = [3,1,3,4,2]
輸出:3
- 代碼實現
class Solution:def findDuplicate1(self, nums: List[int]) -> int:''' 方法一:排序法解析:包含 n + 1 個整數的數組 nums ,其數字都在 [1, n] 范圍內(包括 1 和 n),也就是排序之后,第一個值不等于 位置索引的 數 為 重復數'''nums = sorted(nums)i = 1while i < len(nums):if nums[i] == nums[i-1]:return nums[i]i = i + 1def findDuplicate2(self, nums: List[int]) -> int:''' 方法二:位運算法'''nums = sorted(nums)i = 1while i < len(nums):print(nums[i] ^ nums[i-1])if nums[i] ^ nums[i-1]==0:return nums[i]i = i + 1def findDuplicate3(self, nums: List[int]) -> int:''' 方法三:快慢指針法解析:存在相同值,也就表示 快慢指針 會 相遇'''slow = 0fast = 0while 1:slow = nums[slow]fast = nums[nums[fast]]if slow==fast:fast = 0while 1:if slow==fast:return slowslow = nums[slow]fast = nums[fast]def findDuplicate(self, nums: List[int]) -> int:'''方法四:哈希表法'''dic = set()for num in nums:if num not in dic:dic.add(num)else:return num
技術交流群
前沿技術資訊、算法交流、求職內推、算法競賽、面試交流(校招、社招、實習)等、與 10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企開發者互動交流~
我們建了算法崗技術與面試交流群, 想要進交流群、需要源碼&資料、提升技術的同學,可以直接加微信號:mlc2060。加的時候備注一下:研究方向 +學校/公司+CSDN,即可。然后就可以拉你進群了。
方式①、微信搜索公眾號:機器學習社區,后臺回復:加群
方式②、添加微信號:mlc2060,備注:技術交流
用通俗易懂方式講解系列
- 用通俗易懂的方式講解:自然語言處理初學者指南(附1000頁的PPT講解)
- 用通俗易懂的方式講解:1.6萬字全面掌握 BERT
- 用通俗易懂的方式講解:NLP 這樣學習才是正確路線
- 用通俗易懂的方式講解:28張圖全解深度學習知識!
- 用通俗易懂的方式講解:不用再找了,這就是 NLP 方向最全面試題庫
- 用通俗易懂的方式講解:實體關系抽取入門教程
- 用通俗易懂的方式講解:靈魂 20 問幫你徹底搞定Transformer
- 用通俗易懂的方式講解:圖解 Transformer 架構
- 用通俗易懂的方式講解:大模型算法面經指南(附答案)
- 用通俗易懂的方式講解:十分鐘部署清華 ChatGLM-6B,實測效果超預期
- 用通俗易懂的方式講解:內容講解+代碼案例,輕松掌握大模型應用框架 LangChain
- 用通俗易懂的方式講解:如何用大語言模型構建一個知識問答系統
- 用通俗易懂的方式講解:最全的大模型 RAG 技術概覽
- 用通俗易懂的方式講解:利用 LangChain 和 Neo4j 向量索引,構建一個RAG應用程序
- 用通俗易懂的方式講解:使用 Neo4j 和 LangChain 集成非結構化知識圖增強 QA
- 用通俗易懂的方式講解:面了 5 家知名企業的NLP算法崗(大模型方向),被考倒了。。。。。
- 用通俗易懂的方式講解:NLP 算法實習崗,對我后續找工作太重要了!。
- 用通俗易懂的方式講解:理想汽車大模型算法工程師面試,被問的瑟瑟發抖。。。。
- 用通俗易懂的方式講解:基于 Langchain-Chatchat,我搭建了一個本地知識庫問答系統
- 用通俗易懂的方式講解:面試字節大模型算法崗(實習)
- 用通俗易懂的方式講解:大模型算法崗(含實習)最走心的總結
- 用通俗易懂的方式講解:大模型微調方法匯總