[ad_1]
Trong câu chuyện này, chúng tôi giới thiệu và khám phá rộng rãi chủ đề giám sát yếu trong học máy. Giám sát yếu là một mô hình học tập trong học máy bắt đầu nhận được sự chú ý đáng kể trong những năm gần đây. Tóm lại, giám sát đầy đủ đòi hỏi chúng ta phải có một bộ đào tạo (x,y) Ở đâu y là nhãn chính xác cho x; trong khi đó, sự giám sát yếu kém giả định một bối cảnh chung (x, y’) Ở đâu bạn không nhất thiết phải đúng (nghĩa là nó có khả năng không chính xác; nhãn yếu). Hơn nữa, trong cơ chế giám sát yếu, chúng ta có thể có nhiều người giám sát yếu nên một người có thể có (x, y’1,y’2,…,y’F) cho mỗi ví dụ mỗi nơi ừ xuất phát từ một nguồn khác và có khả năng không chính xác.
Mục lục
∘ Báo cáo vấn đề
∘ Khuôn khổ chung
∘ Kiến trúc tổng hợp
∘ Lặn biển
∘ Ví dụ về giám sát yếu
Báo cáo vấn đề
Nói một cách thực tế hơn, sự giám sát yếu kém hướng tới việc giải quyết cái mà tôi gọi là tình thế tiến thoái lưỡng nan trong học máy có giám sát. Nếu bạn là một doanh nghiệp hoặc một người có ý tưởng mới về học máy, bạn sẽ cần dữ liệu. Thường không khó để thu thập nhiều mẫu (x1, x2, …, xm) và đôi khi, thậm chí có thể thực hiện theo chương trình; tuy nhiên, vấn đề thực sự là bạn sẽ cần thuê người chú thích để dán nhãn dữ liệu này và trả một số $Z cho mỗi nhãn. Vấn đề không chỉ là bạn có thể không biết liệu dự án có đáng giá đến vậy không, mà còn là bạn có thể không đủ khả năng thuê người chú thích ngay từ đầu vì quá trình này có thể khá tốn kém, đặc biệt là trong các lĩnh vực như luật và y học.
Bạn có thể đang nghĩ nhưng làm sao giám sát yếu có thể giải quyết được những vấn đề này? Nói một cách đơn giản, thay vì trả tiền cho người chú thích để dán nhãn cho bạn, bạn yêu cầu họ đưa ra một số quy tắc chung đôi khi có thể không chính xác khi dán nhãn dữ liệu (điều này tốn ít thời gian và tiền bạc hơn nhiều). Trong một số trường hợp, nhóm phát triển của bạn thậm chí có thể dễ dàng tự tìm ra các quy tắc này (ví dụ, nếu nhiệm vụ không yêu cầu người chú thích chuyên gia).
Bây giờ hãy nghĩ về một usecase ví dụ. Bạn đang cố gắng xây dựng một hệ thống NLP có thể che giấu các từ tương ứng với thông tin nhạy cảm như số điện thoại, tên và địa chỉ. Thay vì thuê người gắn nhãn các từ trong kho câu mà bạn đã thu thập, bạn viết một số hàm tự động gắn nhãn cho tất cả dữ liệu dựa trên việc từ đó có phải là tất cả các số hay không (có thể nhưng không chắc chắn là số điện thoại), từ đó có bắt đầu bằng một chữ cái viết hoa không ở đầu câu (có thể nhưng không chắc chắn là tên), v.v. sau đó đào tạo hệ thống của bạn về dữ liệu được gắn nhãn yếu. Bạn có thể nghĩ rằng mô hình được đào tạo sẽ không tốt hơn bất kỳ nguồn ghi nhãn nào nhưng điều đó không chính xác; các mô hình giám sát yếu được thiết kế nhằm khái quát hóa ngoài các nguồn ghi nhãn bằng cách biết rằng có sự không chắc chắn và thường giải thích nó theo cách này hay cách khác.
Khuôn khổ chung
Bây giờ chúng ta hãy chính thức xem xét khuôn khổ giám sát yếu được sử dụng trong xử lý ngôn ngữ tự nhiên.
✦ Được cho
Một tập hợp các F chức năng dán nhãn {L1 L2,…,LF} Ở đâu Lj gán nhãn yếu (nghĩa là có thể không chính xác) cho đầu vào x nơi bất kỳ chức năng dán nhãn nào Lj có thể là bất kỳ:
- Công cụ chú thích Crowdsource (đôi khi chúng không chính xác lắm)
- Nhãn do giám sát khoảng cách (tức là trích xuất từ cơ sở tri thức khác)
- Mô hình yếu (ví dụ: vốn đã yếu hoặc được đào tạo về nhiệm vụ khác)
- Hàm heuristic (ví dụ: quan sát nhãn dựa trên sự tồn tại của từ khóa hoặc mẫu hoặc được xác định bởi chuyên gia tên miền)
- Từ điển địa danh (ví dụ: nhãn quan sát dựa trên sự xuất hiện của nó trong một danh sách cụ thể)
- Lệnh gọi LLM theo lời nhắc cụ thể P (tác phẩm gần đây)
- Bất kỳ hàm nào nói chung (tốt nhất là) thực hiện tốt hơn phép đoán ngẫu nhiên khi đoán nhãn của x.
Người ta thường cho rằng Lý có thể kiêng không đưa ra nhãn (ví dụ, một hàm tìm kiếm như “từ có số thì ghi số điện thoại, còn từ không ghi”).
Giả sử tập huấn luyện có N ví dụ thì tập này tương đương với ma trận nhãn yếu (N,F) trong trường hợp phân loại trình tự. Để phân loại mã thông báo có chuỗi có độ dài T, đó là ma trận (N,T,F) gồm các nhãn yếu.
✦ Muốn
Để đào tạo mô hình M có thể tận dụng hiệu quả dữ liệu được gắn nhãn yếu cùng với bất kỳ dữ liệu mạnh nào nếu có.
✦ Nhiệm vụ NLP phổ biến
- Phân loại trình tự (ví dụ: phân tích tình cảm) hoặc phân loại mã thông báo (ví dụ: nhận dạng thực thể được đặt tên) trong đó chức năng ghi nhãn thường là chức năng phỏng đoán hoặc công báo.
- Bản dịch tài nguyên thấp (x→y) trong đó các hàm gắn nhãn thường là một mô hình dịch yếu hơn (ví dụ, một mô hình dịch theo hướng ngược lại (y→x) để thêm nhiều hơn nữa (x, y) cặp dịch thuật.
Kiến trúc tổng hợp
Đối với các nhiệm vụ phân loại chuỗi hoặc mã thông báo, kiến trúc phổ biến nhất trong tài liệu có thể có dạng sau:
Các nhãn mô hình học cách ánh xạ các đầu ra từ các hàm nhãn tới các nhãn xác suất hoặc xác định được sử dụng để huấn luyện mô hình cuối cùng. Nói cách khác, nó lấy ma trận nhãn (N,F) hoặc (N,T,F) đã thảo luận ở trên và trả về ma trận (N) hoặc (N,T) của các nhãn (thường là nhãn xác suất (tức là mềm)) .
Các mô hình kết thúc được sử dụng riêng sau bước này và chỉ là một trình phân loại thông thường hoạt động trên các nhãn mềm (mất entropy chéo cho phép điều đó) do mô hình nhãn tạo ra. Một số kiến trúc sử dụng deep studying để hợp nhất nhãn và mô hình kết thúc.
Lưu ý rằng khi đã huấn luyện mô hình nhãn, chúng tôi sử dụng nó để tạo nhãn cho mô hình cuối cùng và sau đó chúng tôi không sử dụng mô hình nhãn nữa. Theo nghĩa này, điều này khá khác với việc đặt cược ngay cả khi các chức năng nhãn là các mô hình học máy khác.
Một kiến trúc khác, là mặc định trong trường hợp dịch (và ít phổ biến hơn đối với phân loại chuỗi/mã thông báo), là tính trọng số cho cặp ví dụ yếu (src, trg) dựa trên chất lượng của chúng (thường chỉ có một chức năng ghi nhãn cho bản dịch là mô hình yếu theo hướng ngược lại như đã thảo luận trước đó). Trọng số như vậy sau đó có thể được sử dụng trong hàm mất mát để mô hình học được nhiều hơn từ các mẫu có chất lượng tốt hơn và ít hơn từ các mẫu có chất lượng thấp hơn. Các phương pháp tiếp cận trong trường hợp này cố gắng đưa ra các phương pháp đánh giá chất lượng của một ví dụ cụ thể. Ví dụ, một cách tiếp cận sử dụng điểm BLEU khứ hồi (nghĩa là dịch câu sang mục tiêu rồi quay lại nguồn) để ước tính trọng số đó.
Lặn biển
Để xem ví dụ về cách hoạt động của mô hình nhãn, chúng ta có thể xem Lặn biển được cho là công việc cơ bản nhất trong việc giám sát điểm yếu để phân loại trình tự.
Ở Snorkel, các tác giả quan tâm đến việc tìm kiếm P(yi|Λ(xi)) Ở đâu Λ(xi) là vectơ nhãn yếu của ví dụ thứ i. Rõ ràng, một khi xác suất này được tìm thấy, chúng ta có thể sử dụng nó làm nhãn mềm cho mô hình cuối cùng (vì như chúng tôi đã nói, tổn thất entropy chéo có thể xử lý các nhãn mềm). Cũng rõ ràng, nếu chúng ta có P(y, Λ(x)) thì chúng ta có thể dễ dàng sử dụng để tìm P(y|Λ(x)).
Chúng ta thấy từ phương trình trên rằng họ đã sử dụng giả thuyết tương tự như hồi quy logistic để lập mô hình P(y, Λ(x)) (Z là để chuẩn hóa như trong Sigmoid/Softmax). Sự khác biệt là thay vì wx chúng ta có w.φ(Λ(xi),yi). Đặc biệt, φ(Λ(xi),yi) là một vectơ có chiều 2F+|C|.F là số hàm ghi nhãn như đã đề cập trước đó; trong khi đó, C là tập hợp các cặp hàm ghi nhãn có tương quan (do đó, |C| là số cặp có tương quan). Các tác giả tham khảo một phương pháp trong một bài báo khác để tự động xây dựng C mà chúng ta sẽ không đi sâu vào ở đây vì lý do ngắn gọn.
Véc tơ φ(Λ(xi),yi) chứa:
- F các phần tử nhị phân để xác định xem mỗi chức năng ghi nhãn có bị bỏ qua trong ví dụ đã cho hay không
- F các phần tử nhị phân để chỉ rõ liệu mỗi hàm nhãn có bằng nhãn y thực hay không (ở đây y sẽ được để lại dưới dạng một biến; nó là đầu vào cho phân phối) cho ví dụ này
- C các phần tử nhị phân để xác định xem mỗi cặp tương quan có thực hiện cùng một phiếu bầu cho ví dụ này hay không
Sau đó, họ đào tạo các mô hình nhãn này (tức là ước tính vectơ trọng số của chiều dài 2F+|C|) bằng cách giải quyết mục tiêu sau (giảm thiểu khả năng biên độ logarit âm):
Lưu ý rằng họ không cần thông tin về y vì mục tiêu này được giải quyết bất kể giá trị cụ thể nào của nó được biểu thị bằng tổng. Nếu bạn xem xét kỹ hơn (hoàn tác phần phủ định và nhật ký), bạn có thể thấy rằng điều này tương đương với việc tìm các trọng số giúp tối đa hóa xác suất cho bất kỳ nhãn thực nào.
Sau khi mô hình nhãn được đào tạo, họ sử dụng nó để sản xuất N nhãn mềm P(y1|Λ(x1)), P(y2|Λ(x2)),…,P(yN|Λ(xN)) và sử dụng điều đó để đào tạo một số mô hình phân biệt thông thường (tức là một bộ phân loại).
Ví dụ về giám sát yếu
Snorkel có một hướng dẫn tuyệt vời để phân loại thư rác đây. Skweak là một gói khác (và giấy) là nền tảng cho giám sát yếu đối với phân loại mã thông báo. Đây là một ví dụ về cách bắt đầu với Skweak như được hiển thị trên Github của họ:
Đầu tiên hãy xác định các hàm ghi nhãn:
import spacy, re
from skweak import heuristics, gazetteers, generative, utils### LF 1: heuristic to detect occurrences of MONEY entities
def money_detector(doc):
for tok in doc(1:):
if tok.textual content(0).isdigit() and tok.nbor(-1).is_currency:
yield tok.i-1, tok.i+1, "MONEY"
lf1 = heuristics.FunctionAnnotator("cash", money_detector)
### LF 2: detection of years with a regex
lf2= heuristics.TokenConstraintAnnotator("years", lambda tok: re.match("(19|20)d{2}$",
tok.textual content), "DATE")
### LF 3: a gazetteer with a couple of names
NAMES = (("Barack", "Obama"), ("Donald", "Trump"), ("Joe", "Biden"))
trie = gazetteers.Trie(NAMES)
lf3 = gazetteers.GazetteerAnnotator("presidents", {"PERSON":trie})
Áp dụng chúng vào ngữ liệu
# We create a corpus (right here with a single textual content)
nlp = spacy.load("en_core_web_sm")
doc = nlp("Donald Trump paid $750 in federal revenue taxes in 2016")# apply the labelling capabilities
doc = lf3(lf2(lf1(doc)))
Tạo và điều chỉnh mô hình nhãn
# create and match the HMM aggregation mannequin
hmm = generative.HMM("hmm", ("PERSON", "DATE", "MONEY"))
hmm.match((doc)*10)# as soon as fitted, we merely apply the mannequin to mixture all capabilities
doc = hmm(doc)
# we are able to then visualise the ultimate end result (in Jupyter)
utils.display_entities(doc, "hmm")
Sau đó, tất nhiên bạn có thể huấn luyện một bộ phân loại dựa trên điều này bằng cách sử dụng các nhãn mềm ước tính.
Trong bài viết này, chúng tôi đã khám phá vấn đề được giải quyết bằng giám sát yếu, đưa ra định nghĩa chính thức và phác thảo kiến trúc chung thường được sử dụng trong bối cảnh này. Chúng tôi cũng đi sâu vào Snorkel, một trong những mô hình nền tảng trong giám sát yếu và kết luận bằng một ví dụ thực tế để minh họa cách giám sát yếu có thể được áp dụng.
Hy vọng bạn tìm thấy bài viết hữu ích. Cho đến lần sau, au revoir.
Người giới thiệu
(1) Trương, J. et al. (2021) Cờ lê: Một chuẩn mực toàn diện cho sự giám sát yếu kém, arXiv.org. Có sẵn tại: https://arxiv.org/abs/2109.11377 .
(2) Ratner, A. et al. (2017) Snorkel: Tạo dữ liệu đào tạo nhanh với sự giám sát yếu, arXiv.org. Có sẵn tại: https://arxiv.org/abs/1711.10160.
(3) NorskRegnesentral (2021) NorskRegnesentral/skweak: Skweak: Bộ công cụ phần mềm dành cho giám sát yếu áp dụng cho các tác vụ NLP, GitHub. Có sẵn tại: https://github.com/NorskRegnesentral/skweak.
[ad_2]
Source link