mle-interview
  • 面试指南
  • 数据结构与算法
    • 列表
      • 912. Sort an Array
      • 215. Kth Largest Element
      • 977. Squares of a Sorted Array
      • 605. Can Place Flowers
      • 59. Spiral Matrix II
      • 179. Largest Number
      • 31. Next Permutation
    • 二分查找
      • 704. Binary Search
      • 69. Sqrt(x)
      • 278. First Bad Version
      • 34. Find First and Last Position of Element in Sorted Array
      • 33. Search in Rotated Sorted Array
      • 81. Search in Rotated Sorted Array II
      • 162. Find Peak Element
      • 4. Median of Two Sorted Arrays
      • 1095. Find in Mountain Array
      • 240. Search a 2D Matrix II
      • 540. Single Element in a Sorted Array
      • 528. Random Pick with Weight
      • 1300. Sum of Mutated Array Closest to Target
      • 410. Split Array Largest Sum
      • 1044. Longest Duplicate Substring
      • *644. Maximum Average Subarray II
      • *1060. Missing Element in Sorted Array
      • *1062. Longest Repeating Substring
      • *1891. Cutting Ribbons
    • 双指针
      • 26. Remove Duplicate Numbers in Array
      • 283. Move Zeroes
      • 75. Sort Colors
      • 88. Merge Sorted Arrays
      • 167. Two Sum II - Input array is sorted
      • 11. Container With Most Water
      • 42. Trapping Rain Water
      • 15. 3Sum
      • 16. 3Sum Closest
      • 18. 4Sum
      • 454. 4Sum II
      • 409. Longest Palindrome
      • 125. Valid Palindrome
      • 647. Palindromic Substrings
      • 209. Minimum Size Subarray Sum
      • 5. Longest Palindromic Substring
      • 395. Longest Substring with At Least K Repeating Characters
      • 424. Longest Repeating Character Replacement
      • 76. Minimum Window Substring
      • 3. Longest Substring Without Repeating Characters
      • 1004. Max Consecutive Ones III
      • 1658. Minimum Operations to Reduce X to Zero
      • *277. Find the Celebrity
      • *340. Longest Substring with At Most K Distinct Characters
    • 链表
      • 203. Remove Linked List Elements
      • 19. Remove Nth Node From End of List
      • 876. Middle of the Linked List
      • 206. Reverse Linked List
      • 92. Reverse Linked List II
      • 24. Swap Nodes in Pairs
      • 707. Design Linked List
      • 148. Sort List
      • 160. Intersection of Two Linked Lists
      • 141. Linked List Cycle
      • 142. Linked List Cycle II
      • 328. Odd Even Linked List
    • 哈希表
      • 706. Design HashMap
      • 1. Two Sum
      • 146. LRU Cache
      • 128. Longest Consecutive Sequence
      • 73. Set Matrix Zeroes
      • 380. Insert Delete GetRandom O(1)
      • 49. Group Anagrams
      • 350. Intersection of Two Arrays II
      • 299. Bulls and Cows
      • *348. Design Tic-Tac-Toe
    • 字符串
      • 242. Valid Anagram
      • 151. Reverse Words in a String
      • 205. Isomorphic Strings
      • 647. Palindromic Substrings
      • 696. Count Binary Substrings
      • 28. Find the Index of the First Occurrence in a String
      • *186. Reverse Words in a String II
    • 栈与队列
      • 225. Implement Stack using Queues
      • 54. Spiral Matrix
      • 155. Min Stack
      • 232. Implement Queue using Stacks
      • 150. Evaluate Reverse Polish Notation
      • 224. Basic Calculator
      • 20. Valid Parentheses
      • 1472. Design Browser History
      • 1209. Remove All Adjacent Duplicates in String II
      • 1249. Minimum Remove to Make Valid Parentheses
      • *281. Zigzag Iterator
      • *1429. First Unique Number
      • *346. Moving Average from Data Stream
    • 优先队列/堆
      • 692. Top K Frequent Words
      • 347. Top K Frequent Elements
      • 973. K Closest Points
      • 23. Merge K Sorted Lists
      • 264. Ugly Number II
      • 378. Kth Smallest Element in a Sorted Matrix
      • 295. Find Median from Data Stream
      • 767. Reorganize String
      • 1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
      • 895. Maximum Frequency Stack
      • 1705. Maximum Number of Eaten Apples
      • *1086. High Five
    • 深度优先DFS
      • 二叉树
      • 543. Diameter of Binary Tree
      • 101. Symmetric Tree
      • 124. Binary Tree Maximum Path Sum
      • 226. Invert Binary Tree
      • 104. Maximum Depth of Binary Tree
      • 951. Flip Equivalent Binary Trees
      • 236. Lowest Common Ancestor of a Binary Tree
      • 987. Vertical Order Traversal of a Binary Tree
      • 572. Subtree of Another Tree
      • 863. All Nodes Distance K in Binary Tree
      • 1110. Delete Nodes And Return Forest
      • 230. Kth Smallest element in a BST
      • 98. Validate Binary Search Tree
      • 235. Lowest Common Ancestor of a Binary Search Tree
      • 669. Trim a Binary Search Tree
      • 700. Search in a Binary Search Tree
      • 108. Convert Sorted Array to Binary Search Tree
      • 450. Delete Node in a BST
      • 938. Range Sum of BST
      • *270. Closest Binary Search Tree Value
      • *333. Largest BST Subtree
      • *285. Inorder Successor in BST
      • *1485. Clone Binary Tree With Random Pointer
      • 回溯
      • 39. Combination Sum
      • 78. Subsets
      • 46. Permutation
      • 77. Combinations
      • 17. Letter Combinations of a Phone Number
      • 51. N-Queens
      • 93. Restore IP Addresses
      • 22. Generate Parentheses
      • 856. Score of Parentheses
      • 301. Remove Invalid Parentheses
      • 37. Sodoku Solver
      • 图DFS
      • 126. Word Ladder II
      • 212. Word Search II
      • 79. Word Search
      • 399. Evaluate Division
      • 1376. Time Needed to Inform All Employees
      • 131. Palindrome Partitioning
      • 491. Non-decreasing Subsequences
      • 698. Partition to K Equal Sum Subsets
      • 526. Beautiful Arrangement
      • 139. Word Break
      • 377. Combination Sum IV
      • 472. Concatenated Words
      • 403. Frog Jump
      • 329. Longest Increasing Path in a Matrix
      • 797. All Paths From Source to Target
      • 695. Max Area of Island
      • 341. Flatten Nested List Iterator
      • 394. Decode String
      • *291. Word Pattern II
      • *694. Number of Distinct Islands
      • *1274. Number of Ships in a Rectangle
      • *1087. Brace Expansion
    • 广度优先BFS
      • 102. Binary Tree Level Order Traversal
      • 103. Binary Tree Zigzag Level Order Traversal
      • 297. Serialize and Deserialize Binary Tree
      • 310. Minimum Height Trees
      • 127. Word Ladder
      • 934. Shortest Bridge
      • 200. Number of Islands
      • 133. Clone Graph
      • 130. Surrounded Regions
      • 752. Open the Lock
      • 815. Bus Routes
      • 1091. Shortest Path in Binary Matrix
      • 542. 01 Matrix
      • 1293. Shortest Path in a Grid with Obstacles Elimination
      • 417. Pacific Atlantic Water Flow
      • 207. Course Schedule
      • 210. Course Schedule II
      • 787. Cheapest Flights Within K Stops
      • 444. Sequence Reconstruction
      • 994. Rotting Oranges
      • 785. Is Graph Bipartite?
      • *366. Find Leaves of Binary Tree
      • *314. Binary Tree Vertical Order Traversal
      • *269. Alien Dictionary
      • *323. Connected Component in Undirected Graph
      • *490. The Maze
    • 动态规划
      • 70. Climbing Stairs
      • 72. Edit Distance
      • 377. Combination Sum IV
      • 1335. Minimum Difficulty of a Job Schedule
      • 97. Interleaving String
      • 472. Concatenated Words
      • 403. Frog Jump
      • 674. Longest Continuous Increasing Subsequence
      • 62. Unique Paths
      • 64. Minimum Path Sum
      • 368. Largest Divisible Subset
      • 300. Longest Increasing Subsequence
      • 354. Russian Doll Envelopes
      • 121. Best Time to Buy and Sell Stock
      • 132. Palindrome Partitioning II
      • 312. Burst Balloons
      • 1143. Longest Common Subsequence
      • 718. Maximum Length of Repeated Subarray
      • 174. Dungeon Game
      • 115. Distinct Subsequences
      • 91. Decode Ways
      • 639. Decode Ways II
      • 712. Minimum ASCII Delete Sum for Two Strings
      • 221. Maximal Square
      • 1277. Count Square Submatrices with All Ones
      • 198. House Robber
      • 213. House Robber II
      • 1235. Maximum Profit in Job Scheduling
      • 740. Delete and Earn
      • 87. Scramble String
      • 1140. Stone Game II
      • 322. Coin Change
      • 518. Coin Change II
      • 1048. Longest String Chain
      • 44. Wildcard Matching
      • 10. Regular Expression Matching
      • 32. Longest Valid Parentheses
      • 1043. Partition Array for Maximum Sum
      • *256. Paint House
      • 926. Flip String to Monotone Increasing
      • *1062. Longest Repeating Substring
      • *1216. Valid Palindrome III
    • 贪心
      • 56. Merge Intervals
      • 621. Task Scheduler
      • 135. Candy
      • 376. Wiggle Subsequence
      • 55. Jump Game
      • 134. Gas Station
      • 1005. Maximize Sum Of Array After K Negations
      • 406. Queue Reconstruction by Height
      • 452. Minimum Number of Arrows to Burst Balloons
      • 738. Monotone Increasing Digits
    • 单调栈
      • 739. Daily Temperatures
      • 503. Next Greater Element II
      • 901. Online Stock Span
      • 85. Maximum Rectangle
      • 84. Largest Rectangle in Histogram
      • 907. Sum of Subarray Minimums
      • 239. Sliding Window Maximum
    • 前缀和
      • 53. Maximum Subarray
      • 523. Continuous Subarray Sum
      • 304. Range Sum Query 2D - Immutable
      • 1423. Maximum Points You Can Obtain from Cards
      • 1031. Maximum Sum of Two Non-Overlapping Subarrays
    • 并查集
      • 684. Redundant Connection
      • 721. Accounts Merge
      • 547. Number of Provinces
      • 737. Sentence Similarity II
      • *305. Number of Islands II
    • 字典树trie
      • 208. Implement Trie
      • 211. Design Add and Search Words Data Structure
      • 1268. Search Suggestions System
      • *1166. Design File System
      • *642. Design Search Autocomplete System
    • 扫描线sweep line
      • 253. Meeting Room II
      • 1094. Car Pooling
      • 218. The Skyline Problem
      • *759. Employee Free Time
    • tree map
      • 729. My Calendar I
      • 981. Time Based Key-Value Store
      • 846. Hand of Straights
      • 480. Sliding Window Median
      • 318. Count of Smaller Numbers After Self
    • 数学类
      • 50. Pow(x, n)
      • *311. Sparse Matrix Multiplication
      • 382. Linked List Random Node
      • 398. Random Pick Index
      • 29. Divide Two Integers
    • 设计类
      • 1603. Design Parking System
      • 355. Design Twitter
      • 1396. Design Underground System
      • *359. Logger Rate Limiter
      • *353. Design Snake Game
      • *379. Design Phone Directory
      • *588. Design In-Memory File System
      • *1244. Design A Leaderboard
    • SQL
  • 机器学习
    • 数学基础
    • 评价指标
    • 线性回归
    • 逻辑回归
    • 树模型
    • 深度学习
    • 支持向量机
    • KNN
    • 无监督学习
    • k-means
    • 强化学习 RL
    • 自然语言处理 NLP
    • 大语言模型 LLM
    • 机器视觉 CV
    • 多模态 MM
    • 分布式机器学习
    • 推荐系统
    • 异常检测与风控
    • 模型解释性
    • 多任务学习
    • MLops
    • 特征工程
    • 在线学习
    • 硬件 cuda/triton
    • 产品case分析
    • 项目deep dive
    • 机器学习代码汇总
  • 系统设计
    • 面向对象设计
      • 电梯设计
      • 停车场设计
      • Unix文件系统设计
    • 系统设计
      • 设计社交网站Twitter
      • 设计视频网站Youtube
      • 短网址系统
      • 爬虫系统
      • 任务调度系统
      • 日志系统
      • 分布式缓存
      • 广告点击聚合系统
      • webhook
    • 机器学习系统设计
      • 推荐系统
      • 搜索引擎
      • Youtube视频推荐
      • Twitter推荐
      • 广告点击预测
      • 新闻推送推荐
      • POI推荐
      • Youtube视频搜索
      • 有害内容检测
      • 大模型RAG
      • 大模型Agent
      • 信贷风控
      • 朋友推荐
      • 去重复性/版权检测
      • 情感分析
      • 目标检测
      • 问答系统
      • 知识图谱问答
  • 行为面试
    • 领导力法则
    • 问答举例
  • 案例分享
    • 准备工作
    • 面试小抄
    • 面试之后
Powered by GitBook
On this page
  • 1. Tokenizer
  • 2. 模型
  • word2vec/glove/fasttext
  • Transformer
  • GPT
  • 3. 评价指标
  • 4. 应用
  • 4.1 文本分类
  • 4.2 实体识别
  • 4.3 文本摘要 Text summarization
  • 4.4 关键词提取
  • 4.5 文本生成
  • 5. 解决问题
  • 5.1 多语言模型 Multilingual
  • 5.2 长序列
  • 6. 问答
  • 参考
  1. 机器学习

自然语言处理 NLP

NLP包括自然语言理解和自然语言生成,任务包括文本分类、相似匹配、对话问答、机器翻译、序列标注、知识图谱、意图理解、词义消歧。

  • 视觉和nlp最大的区别:语义稀疏性,域间差异性,无限粒度性

  • Transformer时代三类模型:bert(自编码)、gpt(自回归)、bart(编码-解码)

1. Tokenizer

  • tokenizer: 大致经历了从word/char到subword的进化

  • word level

    • 词表的长尾效应非常大,OOV问题,单词的形态关系和词缀关系(old, older)

  • char level

    • 无法承载丰富的语义,序列长度长

  • sub-word level: BPE, Bytes BPE, WordPiece, Uni-gram, SentencePiece

    • 常用词保持原状,生僻词应该拆分成子词以共享token压缩空间

    • BPE: byte-pair encoding 无监督分词,自底向上的策略。初始化将每个字符为词典,统计词频,迭代(合并频率最高的词对,更新词频)

    • wordpiece: 无监督分词,自顶向下的贪心拆分策略,最大似然估计确定最佳分割点(基于概率生成新subword),词频更新词典

    • SentencePiece库: 基于BPE和uni-gram,根据不同任务或语料库需求,自定义分词模型,更好处理未登录或稀有词

    • chatGPT训练中文: BPE算法在中文上训,最小单元不再是汉字,而是 byte,UTF-8 编码中,一个汉字相当 3 个字节

    • 解决OOV(out-of-vocabulary)问题,even if a word is not seen during training, the model can still understand and generate text based on its constituent parts

2. 模型

传统

  • BOW

  • tfidf

  • word2vec

  • crf

encoder-decoder

  • BART

  • T5

encoder

  • BERT

  • XLNet

decoder

  • GPT3

  • PALM

  • LLaMA

word2vec/glove/fasttext

  • word2vec: 本质上是词的共现

  • 缺点:

    • 静态表征(contextless word embeddings). 训练完成做推理时, 每个token的表示与上下文无关

    • 一词多义:disambiguate words with multiple meanings

  • Hierarchical Softmax: 霍夫曼树, n分类变成 log(n) 次二分类

  • Negative Sampling 负采样

    • 基于词频的采样,w^(0.75)

    • 负样本中选取一部分来更新,而不是更新全部的权重

Transformer

  • Transformer时代几大模型范式, BERT: encoder-only, GPT: decoder-only, T5: encoder-decoder, GLM: prefix-lm

  • 预训练任务:Masked Language Model 和 Next Sentence Predict(Autoregressive)

  • bert下游任务

  • fine tune

    • adapter

  • ELMo是分别以P(wi|w1...wi-1) 和 P(wi|wi+1...wn) 作为目标函数,独立训练处两个representation然后拼接,而BERT则是以p(wi|1..wi-1,wi+1,..wn) 作为目标函数训练LM。

  • 位置编码

    • 绝对位置编码

    • 相对位置编码

    • 旋转位置编码RoPE

ERNIE

RoBERTa

  • 调了更好的版本的BERT

  • 预训练,无NSP任务

  • 动态Mask: 训练数据复制多份,每份采用不同的随机挑选 token 进行掩码

  • 更大的词汇表

XLNet

  • 自回归

UniLM

TinyBERT

  • Loss: Embedding Layer Distillation, Transformer Layer Distillation, Prediction Layer Distillation

GPT

  • 自回归模型

  • GPT3: Zero-Shot Learning

  • gpt的四个下游任务

  • Emergent Ability

3. 评价指标

perplexity

BLEU

  • BLEU 根据精确率(Precision)衡量翻译的质量,而 ROUGE 根据召回率(Recall)衡量翻译的质量

  • 过于依赖参考,如果译文质量很好但部分字词在参考翻译中没有的话得分会很低;未考虑语法问题

ROGUE (Recall-Oriented Understudy for Gisting Evaluation)

  • ROUGE-N: N-gram拆分后,计算召回率

  • ROUGE-L: 最长公共子序列(非连续)

  • ROUGE-W: 连续匹配情况加权后的最长公共子序列长度

BertScore

4. 应用

对具体的应用方向应该建立和熟悉其发展脉络

4.1 文本分类

知识点

  • word2vec

    • HS是怎么做的?负采样怎么做的?

    • 负采样:加速了模型计算,保证了模型训练的效果。模型每次只需要更新采样的词的权重,不用更新所有的权重,那样会很慢。中心词其实只跟它周围的词有关系,位置离着很远的词没有关系,也没必要同时训练更新。采样 ,词频越大,被采样的概率就越大。

  • fasttext

    • fasttext的架构和word2vec 中的cbow 类似,不同之处在于,fasttext预测的是标签,cbow 预测的是中间词

    • 将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类

  • bert

  • albert

    • ALBERT如何节约参数和训练(SOP)不一样的点

  • roberta

    • 动态mask,ratio

4.2 实体识别

信息抽取(Information Extraction)

  • 序列标注(Sequence Labeling)

  • 指针网络(Pointer Network)

    • PointerNet

    • UIE: 基于 prompt 的指针网络

实体识别 NER

  • Nested NER/ Flat NER

  • lower layers of a pre-trained LLM tend to reflect “syntax” while higher levels tend to reflect “semantics”

  • CRF 是一个序列化标注算法,接收一个输入序列,输出目标序列,可以被看作是一个 Seq2Seq 模型

关系抽取 RE

  • 关系抽取后的结果:保存Neo4j

  • 嵌套->GP, 非连续->W2ner, 带prompt->UIE

事件抽取 EE

  • djhee 和 plmee

Entity Linking

4.3 文本摘要 Text summarization

  • 分为抽象式摘要(abstractive summarization)和抽取式摘要(extractive summarization)

  • 在抽象式摘要中,目标摘要所包含的词或短语会不在原文中,通常需要进行文本重写等操作进行生成;

  • 抽取式摘要,通过复制和重组文档中最重要的内容(一般为句子)来形成摘要。那么如何获取并选择文档中重要句子,就是抽取式摘要的关键。传统抽取式摘要方法包括Lead-3和TextRank,传统深度学习方法一般采用LSTM或GRU模型进行重要句子的判断与选择,可以采用预训练语言模型自编码BERT/自回归GPT进行抽取式摘要。

常用指标

  • ROUGE

  • BLEU

4.4 关键词提取

key phrase generation

  • https://www.zhihu.com/question/21104071

  • NPChunker

4.5 文本生成

  • beam search

5. 解决问题

5.1 多语言模型 Multilingual

语言模型

  • 语言模型的常用评价指标是困惑度perplexity

  • 为多语言训练SentencePiece (SPM)

5.2 长序列

6. 问答

  • 为啥文本不用batch norm要用layer norm

    • BN: batch之间每一个element之间的分布,对Batch Size大小很敏感; LN: 每一个example序列之间的分布标准化

  • transformer计算kvq的含义

  • 如何‌估计微调一个language model的成本是多少

  • quantization的概念,解释一下如何工作的

  • 如果文本非常长怎么处理

  • 如何克服固定context window的限制,能不能有100K的context window

  • Bert是怎么解决OOV问题

    • 如果一个单词不在词表中,则按照subword的方式逐个拆分token,如果连逐个token都找不到,则直接分配为[unknown]; WordPiece广泛覆盖,这种情况较少发生

  • BERT/GPT的区别

    • decoder_only 模型通过逐步生成的方式处理信息,不会将信息压缩到单个表示中。

    • BERT 则通过 CLS token 将信息汇总到一个单一的表示中,这种压缩的方式用于处理下游任务。

    • 随着大模型时代,即使是传统NLP任务,在few shot或语义复杂场景的时候,GPT更有优势

  • adam/adamW区别

  • query理解

    • NER 品牌、品类等

    • 构建实体库

    • 提升:增强,构造邻居词,共现的实体补充文本

  • NER 和 POS 任务有什么区别和相似

  • 文本流利度的指标

  • 生成

    • beam search: 累积概率最大的k个序列

参考

精读

扩展

课程

Previous强化学习 RLNext大语言模型 LLM

Last updated 21 days ago

spert/ CasRel//GPLinker

n-gram
Rotary Embeddings: A Relative Revolution
ROUND AND ROUND WE GO! WHAT MAKES ROTARY POSITIONAL ENCODINGS USEFUL?
基于召回率
TPLinker
Rethinking Batch Normalization in Transformers
Let's reproduce GPT-2 (124M)
n-gram in hadoop map-reduce
秒懂词向量Word2vec的本质 - 穆文的文章 - 知乎
语言模型
NLP 任务中有哪些巧妙的 idea? - 邱锡鹏的回答 - 知乎
Text clustering with K-means and tf-idf
https://github.com/firechecking/CleanTransformer
史上最细节的自然语言处理NLP/Transformer/BERT/Attention面试问题与答案 - 海晨威的文章 - 知乎
https://github.com/deborausujono/word2vecpy
information-retrieval-book
The Evolution of Tokenization – Byte Pair Encoding in NLP
前处理 Tokenizer- Byte Pair Encoder
【LLM拆了再装】 Tokenizer篇 - coreyzhong的文章 - 知乎
Transformer学习笔记一:Positional Encoding(位置编码) - 猛猿的文章 - 知乎
https://github.com/wangle1218/KBQA-for-Diagnosis
https://github.com/wangle1218/faq-qa-sys-v2
beam search的简单实现(面试版) - lumino的文章 - 知乎
LLM+Embedding构建问答系统的局限性及优化方案
Generating N-grams from Sentences in Python
超长文本综述:Effective Long Context Scaling of Foundation Models
Climbing towards NLU: On Meaning, Form, and Understanding in the Age of Data
实体命名识别(NER)如何入门? - 致Great的回答 - 知乎
流水的NLP铁打的NER:命名实体识别实践与探索 - 王岳王院长的文章 - 知乎
Knowledge Graph & NLP Tutorial-(BERT,spaCy,NLTK)
跨语言预训练模型简述 - 潘小小的文章 - 知乎
Shopee Products Matching: Text Part
7篇文章弄清楚关系抽取的经典范式 - 眼睛里进砖头了的文章 - 知乎
huggingface transformers教程总结 - 屯屯的文章 - 知乎
Pytorch data Samplers & Sequence bucketing
Pytorch BERT beginner's room
https://transformers.run/c3/2022-03-18-transformers-note-6/
Let's build GPT: from scratch, in code, spelled out.
https://github.com/karpathy/minbpe
Bert/Transformer 被忽视的细节(或许可以用来做面试题) - LiteAI的文章 - 知乎
在BERT已经成为NLP基础知识的当下,你会在面试中问关于BERT的什么问题? - Elesdspline的回答 - 知乎
NLP领域,你推荐哪些综述性的文章?
邱锡鹏: nlp-beginner
CS224N
Stanford CS25: V2 I Introduction to Transformers w/ Andrej Karpathy