In contrastive learning, "pulling" and "pushing" refer to adjusting the representations (the sequence of numbers I mentioned earlier) produced by the neural network, so that similar samples are close to each other and dissimilar samples are far apart in the representation space.
This is achieved using a loss function, which compares the representations of each pair of samples and calculates a score that measures how close or far apart they are. The goal is to minimize this score for similar pairs and maximize it for dissimilar pairs.
The mathematical details can vary, but a common approach is to use the contrastive loss, which is calculated as:

Loss = (1 - y) * d^2 + y * max(margin - d, 0)^2

where:

    - d is the Euclidean distance between the representations of the two samples
    - y is a binary label indicating whether the two samples are similar (y = 1) or dissimilar (y = 0)
    - margin is a hyperparameter that sets the minimum acceptable distance between representations of dissimilar pairs

This loss function encourages the representations of similar pairs to be close together (i.e., d is small), while penalizing representations of dissimilar pairs that are too close (i.e., d is large but less than margin).
To optimize this loss, we can use any gradient-based optimization method, such as stochastic gradient descent, to update the parameters of the neural network. The idea is that over time, the representations produced by the network will become increasingly good at separating similar and dissimilar samples, which will improve the model's ability to discriminate between different classes.
ในการเรียนรู้แบบเปรียบเทียบ "การดึง" และ "การผลัก" หมายถึงการปรับการเป็นตัวแทน (ลำดับของตัวเลขที่ฉันกล่าวถึงก่อนหน้านี้) ที่สร้างโดยโครงข่ายประสาทเทียม เพื่อให้ตัวอย่างที่คล้ายกันอยู่ใกล้กัน และตัวอย่างที่แตกต่างกันจะอยู่ห่างกันมากในพื้นที่การเป็นตัวแทน . ซึ่งทำได้โดยใช้ฟังก์ชันการสูญเสีย ซึ่งจะเปรียบเทียบการแสดงตัวอย่างแต่ละคู่ และคำนวณคะแนนที่วัดว่าตัวอย่างแต่ละตัวอย่างอยู่ใกล้หรือห่างกันเพียงใด เป้าหมายคือการลดคะแนนนี้สำหรับคู่ที่คล้ายกันและเพิ่มคะแนนให้สูงสุดสำหรับคู่ที่ไม่เหมือนกัน รายละเอียดทางคณิตศาสตร์อาจแตกต่างกันไป แต่วิธีการทั่วไปคือการใช้การสูญเสียเชิงเปรียบเทียบ ซึ่งคำนวณเป็น: Loss = (1 - y) * d^2 + y * max(margin - d, 0)^2 โดยที่: - d คือระยะห่างแบบยุคลิดระหว่างการแทนค่าของทั้งสองตัวอย่าง - y คือฉลากไบนารีที่ระบุว่าทั้งสองตัวอย่างคล้ายกัน (y = 1) หรือไม่เหมือนกัน (y = 0) - ส่วนต่างคือไฮเปอร์พารามิเตอร์ที่กำหนดระยะห่างขั้นต่ำที่ยอมรับได้ระหว่างการแทนค่าของ คู่ที่ไม่เหมือนกัน ฟังก์ชั่นการสูญเสียนี้สนับสนุนให้การแสดงคู่ที่คล้ายกันอยู่ใกล้กัน (เช่น d มีค่าน้อย) ขณะเดียวกันก็ลงโทษการแทนคู่ที่ไม่เหมือนกันซึ่งอยู่ใกล้เกินไป (เช่น d มีขนาดใหญ่แต่น้อยกว่าระยะขอบ) เพื่อปรับการสูญเสียนี้ให้เหมาะสม เราสามารถใช้วิธีการปรับให้เหมาะสมตามการไล่ระดับสี เช่น การไล่ระดับสีแบบสุ่ม เพื่ออัปเดตพารามิเตอร์ของโครงข่ายประสาทเทียม แนวคิดก็คือเมื่อเวลาผ่านไป การแสดงข้อมูลที่ผลิตโดยเครือข่ายจะมีประสิทธิภาพมากขึ้นในการแยกตัวอย่างที่เหมือนกันและไม่เหมือนกัน ซึ่งจะปรับปรุงความสามารถของแบบจำลองในการแยกแยะระหว่างคลาสต่างๆ
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence