It has to do with a process called differentiation, which means finding a derivative: a function that tells us whether another function is going up or down at a given point. For example, the derivative of `f(x) = x` is `f'(x) = 1`, because it's always going up at a 1:1 ratio. This can be done for a variety of functions; notably, if you know the derivatives of `f(x)` and `g(x)`, you can also get the derivative of `f(g(x))` using a formula called the chain rule. Neural networks happen to be made of differentiable functions, so we can take the derivative of parts or all of it.

To use this for "pushing" and "pulling", we'll put two images through the neural network. Let's say the images are of a cat and a dog, so we want to increase the distance between the two. We pick one neuron weight from the network and make it a variable `x`, then construct a function that calculates the output of the network based on it and all the other parameters; let's call it `N(x)`. The distance between the cat and dog outputs would be `f(x) = N(cat) - N(dog)`. (Of course, the real output would have more than 1 dimension, but we're simplifying.) We now want to nudge the weight such that it moves the two outputs slightly further apart. For that, we can simply take the derivative! If `f'(x)` is positive, that means that increasing the weight will move them further apart, so we should do that. If it's negative, then it'll move them closer, so we'll want to slightly decrease the weight instead. Apply this to all the neurons enough times and your network will soon converge to a pretty good cat-dog separator!
มันเกี่ยวข้องกับกระบวนการที่เรียกว่าการสร้างความแตกต่าง ซึ่งหมายถึงการค้นหาอนุพันธ์ ซึ่งเป็นฟังก์ชันที่บอกเราว่าฟังก์ชันอื่นกำลังขึ้นหรือลงในจุดที่กำหนด ตัวอย่างเช่น อนุพันธ์ของ `f(x) = x` คือ `f'(x) = 1` เพราะมันจะเพิ่มขึ้นที่อัตราส่วน 1:1 เสมอ ซึ่งสามารถทำได้หลากหลายฟังก์ชัน โดยเฉพาะอย่างยิ่ง หากคุณทราบอนุพันธ์ของ `f(x)` และ `g(x)` คุณก็สามารถรับอนุพันธ์ของ `f(g(x))` ได้เช่นกันโดยใช้สูตรที่เรียกว่ากฎลูกโซ่ โครงข่ายประสาทเทียมถูกสร้างขึ้นจากฟังก์ชันที่หาอนุพันธ์ได้ ดังนั้นเราจึงสามารถหาอนุพันธ์ของส่วนต่างๆ หรือทั้งหมดได้ หากต้องการใช้สิ่งนี้เพื่อ "ผลัก" และ "ดึง" เราจะใส่ภาพสองภาพผ่านโครงข่ายประสาทเทียม สมมติว่ารูปภาพเป็นรูปแมวและสุนัข ดังนั้นเราจึงต้องการเพิ่มระยะห่างระหว่างรูปภาพทั้งสอง เราเลือกน้ำหนักของเซลล์ประสาทหนึ่งตัวจากเครือข่ายและทำให้เป็นตัวแปร `x` จากนั้นจึงสร้างฟังก์ชันที่คำนวณเอาต์พุตของเครือข่ายตามค่านั้นและพารามิเตอร์อื่นๆ ทั้งหมด เรียกมันว่า `N(x)` กันดีกว่า ระยะห่างระหว่างเอาต์พุตของแมวและสุนัขจะเป็น `f(x) = N(cat) - N(dog)` (แน่นอนว่าผลลัพธ์จริงจะมีมากกว่า 1 มิติ แต่เรากำลังทำให้ง่ายขึ้น) ตอนนี้เราต้องการดันน้ำหนักเพื่อให้ทั้งสองผลลัพธ์เคลื่อนออกจากกันเล็กน้อย เพื่อสิ่งนั้น เราก็หาอนุพันธ์ได้! หาก `f'(x)` เป็นบวก นั่นหมายความว่าการเพิ่มน้ำหนักจะทำให้พวกมันแยกจากกันมากขึ้น ดังนั้นเราจึงควรทำอย่างนั้น หากเป็นลบ มันจะเคลื่อนพวกมันเข้ามาใกล้มากขึ้น เราจึงต้องลดน้ำหนักลงเล็กน้อยแทน ใช้สิ่งนี้กับเซลล์ประสาททั้งหมดให้เพียงพอ แล้วเครือข่ายของคุณก็จะมาบรรจบกันเป็นเครื่องแยกแมวและสุนัขที่ดีในไม่ช้า!
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence