การใช้งานของสัญญาซื้อขายล่วงหน้าในโครงข่ายประสาทเทียมสำหรับขั้นตอนการฝึกอบรมที่เรียกว่าแพร่กระจายย้อนกลับ เทคนิคนี้ใช้การไล่ระดับสีแบบไล่ลำดับเพื่อค้นหาชุดพารามิเตอร์ที่ดีที่สุดเพื่อลดฟังก์ชั่นการสูญเสีย ในตัวอย่างของคุณคุณต้องใช้อนุพันธ์ของ sigmoidเพราะนั่นคือการเปิดใช้งานที่เซลล์ประสาทส่วนบุคคลของคุณใช้
ฟังก์ชั่นการสูญเสีย
สาระสำคัญของการเรียนรู้ของเครื่องคือการเพิ่มประสิทธิภาพฟังก์ชั่นค่าใช้จ่ายเพื่อให้เราสามารถลดหรือเพิ่มฟังก์ชั่นเป้าหมายบางอย่าง โดยทั่วไปเรียกว่าการสูญเสียหรือ funtion ค่าใช้จ่าย โดยทั่วไปแล้วเราต้องการลดฟังก์ชั่นนี้ ฟังก์ชั่นค่าใช้จ่าย, , เชื่อมโยงการลงโทษบางอย่างขึ้นอยู่กับข้อผิดพลาดที่เกิดขึ้นเมื่อส่งผ่านข้อมูลผ่านแบบจำลองของคุณเป็นฟังก์ชั่นของพารามิเตอร์แบบจำลองC
ลองดูตัวอย่างที่เราพยายามติดป้ายว่ารูปภาพมีแมวหรือสุนัขหรือไม่ ถ้าเรามีรูปแบบที่สมบูรณ์แบบเราสามารถให้รูปแบบและมันจะบอกเราว่ามันเป็นแมวหรือสุนัข อย่างไรก็ตามไม่มีโมเดลที่สมบูรณ์และจะทำผิดพลาด
เมื่อเราฝึกแบบจำลองของเราเพื่อให้สามารถอนุมานความหมายจากข้อมูลอินพุตเราต้องการลดจำนวนข้อผิดพลาดที่เกิดขึ้น ดังนั้นเราจึงใช้ชุดฝึกอบรมข้อมูลนี้มีรูปภาพสุนัขและแมวจำนวนมากและเรามีป้ายกำกับความจริงที่เกี่ยวข้องกับภาพนั้น ทุกครั้งที่เราทำการฝึกซ้ำของแบบจำลองเราคำนวณต้นทุน (จำนวนข้อผิดพลาด) ของแบบจำลอง เราจะต้องการลดค่าใช้จ่ายนี้
ฟังก์ชั่นค่าใช้จ่ายจำนวนมากมีอยู่เพื่อวัตถุประสงค์ของตนเอง ฟังก์ชั่นค่าใช้จ่ายทั่วไปที่ใช้เป็นค่าใช้จ่ายกำลังสองซึ่งถูกกำหนดเป็น
2C=1N∑Ni=0(y^−y)2
นี่คือความแตกต่างระหว่างป้ายกำกับที่คาดการณ์กับป้ายกำกับความจริงภาคพื้นดินสำหรับภาพที่เราฝึกมา เราจะต้องการย่อขนาดนี้ให้เล็กลงN
ลดฟังก์ชั่นการสูญเสียให้น้อยที่สุด
อันที่จริงแล้วการเรียนรู้ของเครื่องจักรส่วนใหญ่นั้นเป็นเพียงกรอบการทำงานที่มีความสามารถในการพิจารณาการกระจายโดยการลดฟังก์ชั่นค่าใช้จ่าย คำถามที่เราสามารถถามได้คือ "เราจะลดฟังก์ชั่นได้อย่างไร"
ลองย่อฟังก์ชั่นต่อไปนี้
6y=x2−4x+6
ถ้าเราพล็อตนี้เราจะเห็นว่ามีขั้นต่ำที่ 2 ในการทำสิ่งนี้เราสามารถหาอนุพันธ์ของฟังก์ชันนี้ได้x=2
dydx=2x−4=0
2x=2
อย่างไรก็ตามบ่อยครั้งที่การค้นหาการวิเคราะห์ขั้นต่ำระดับโลกไม่สามารถทำได้ ดังนั้นเราจึงใช้เทคนิคการเพิ่มประสิทธิภาพแทน นี่คือวิธีที่แตกต่างกันเป็นจำนวนมากที่มีอยู่เช่น: Newton-Raphson ค้นหาตาราง ฯลฯ กลุ่มคนเหล่านี้เป็นเชื้อสายลาด นี่คือเทคนิคที่ใช้โดยเครือข่ายประสาท
โคตรลาด
ลองใช้การเปรียบเทียบที่ใช้ชื่อเสียงเพื่อทำความเข้าใจสิ่งนี้ ลองนึกภาพปัญหาการย่อขนาด 2D นี่เทียบเท่ากับการปีนเขาที่เป็นภูเขาในถิ่นทุรกันดาร คุณต้องการกลับไปที่หมู่บ้านที่คุณรู้ว่าอยู่ที่จุดต่ำสุด แม้ว่าคุณจะไม่ทราบทิศทางสำคัญของหมู่บ้าน สิ่งที่คุณต้องทำคือเดินลงไปเรื่อย ๆ และในที่สุดคุณก็จะไปถึงหมู่บ้าน ดังนั้นเราจะลงมาตามพื้นผิวตามความชันของความลาดชัน
มาฟังก์ชั่นของเรากัน
y=x2−4x+6
เราจะหาค่าที่yถูกย่อให้เล็กสุด ขั้นตอนวิธีการไล่โทนสีเชื้อสายแรกที่บอกว่าเราจะรับค่าสุ่มสำหรับx ให้เราเริ่มต้นที่x = 8xyxx=8 8จากนั้นอัลกอริทึมจะทำสิ่งต่อไปนี้ซ้ำ ๆ จนกว่าเราจะมาบรรจบกัน
xnew=xold−νdydx
เมื่อเป็นอัตราการเรียนรู้เราสามารถตั้งค่านี้เป็นค่าใดก็ได้ที่เราต้องการ อย่างไรก็ตามมีวิธีที่ชาญฉลาดในการเลือกสิ่งนี้ ใหญ่เกินไปและเราจะไม่ถึงค่าต่ำสุดของเราและใหญ่เกินไปเราจะเสียเวลามากเกินไปก่อนที่เราจะไปถึงที่นั่น มันคล้ายกับขนาดของขั้นตอนที่คุณต้องการลดความชันลง ก้าวเล็ก ๆ และคุณจะตายบนภูเขาคุณจะไม่มีวันลง ขั้นตอนใหญ่เกินไปและคุณเสี่ยงที่จะยิงหมู่บ้านและสิ้นสุดที่อีกด้านหนึ่งของภูเขา อนุพันธ์คือวิธีการที่เราเดินทางไปตามความชันนี้ไปสู่ค่าต่ำสุดของเราν
dydx=2x−4
ν=0.1
การวนซ้ำ 1:
x n e w = 6.8 - 0.1 ( 2 ∗ 6.8 - 4 ) = 5.84 x n e w = 5.84 - 0.1 ( 2 ∗ 5.84 - 4 ) = 5.07 x n e w = ( 2 ∗xnew=8−0.1(2∗8−4)=6.8
xnew=6.8−0.1(2∗6.8−4)=5.84
xnew=5.84−0.1(2∗5.84−4)=5.07
x n e w = 4.45 - 0.1 ( 2 ∗ 4.45 - 4 ) = 3.96 x n e w = 3.96 - 0.1 ( 2 ∗ 3.96 - 4 ) = 3.57 x n e w = 3.57 - 0.1 ( 2 ∗ 3.57 - 4 )xnew=5.07−0.1(2∗5.07−4)=4.45
xnew=4.45−0.1(2∗4.45−4)=3.96
xnew=3.96−0.1(2∗3.96−4)=3.57
x n E Wxnew=3.57−0.1(2∗3.57−4)=3.25
x n e w = 3.00 - 0.1 ( 2 ∗ 3.00 - 4 ) = 2.80 x n e w = 2.80 - 0.1 ( 2 ∗ 2.80 - 4 ) = 2.64 x n e w =xnew=3.25−0.1(2∗3.25−4)=3.00
xnew=3.00−0.1(2∗3.00−4)=2.80
xnew=2.80−0.1(2∗2.80−4)=2.64
x n e w = 2.51 - 0.1 ( 2 ∗ 2.51 - 4 ) = 2.41 x n e w = 2.41 - 0.1 ( 2 ∗ 2.41 - 4 ) = 2.32 x n e w = 2.32 - 0.1 ( 2 ∗ 2.32xnew=2.64−0.1(2∗2.64−4)=2.51
xnew=2.51−0.1(2∗2.51−4)=2.41
xnew=2.41−0.1(2∗2.41−4)=2.32
xnew=2.32−0.1(2∗2.32−4)=2.26
xnew=2.26−0.1(2∗2.26−4)=2.21
xnew=2.21−0.1(2∗2.21−4)=2.16
xnew=2.16−0.1(2∗2.16−4)=2.13
xnew=2.13−0.1(2∗2.13−4)=2.10
xnew=2.10−0.1(2∗2.10−4)=2.08
xnew=2.08−0.1(2∗2.08−4)=2.06
xnew=2.06−0.1(2∗2.06−4)=2.05
xnew=2.05−0.1(2∗2.05−4)=2.04
xnew=2.04−0.1(2∗2.04−4)=2.03
xnew=2.03−0.1(2∗2.03−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
And we see that the algorithm converges at x=2! We have found the minimum.
Applied to neural networks
The first neural networks only had a single neuron which took in some inputs x and then provide an output y^. A common function used is the sigmoid function
σ(z)=11+exp(z)
y^(wTx)=11+exp(wTx+b)
where w is the associated weight for each input x and we have a bias b. We then want to minimize our cost function
C=12N∑Ni=0(y^−y)2.
How to train the neural network?
We will use gradient descent to train the weights based on the output of the sigmoid function and we will use some cost function C and train on batches of data of size N.
C=12N∑Ni(y^−y)2
y^ is the predicted class obtained from the sigmoid function and y is the ground truth label. We will use gradient descent to minimize the cost function with respect to the weights w. To make life easier we will split the derivative as follows
∂C∂w=∂C∂y^∂y^∂w.
∂C∂y^=y^−y
and we have that y^=σ(wTx) and the derivative of the sigmoid function is ∂σ(z)∂z=σ(z)(1−σ(z)) thus we have,
∂y^∂w=11+exp(wTx+b)(1−11+exp(wTx+b)).
So we can then update the weights through gradient descent as
wnew=wold−η∂C∂w
where η is the learning rate.