<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Semooze</title>
    <description>The latest articles on DEV Community by Semooze (@semooze).</description>
    <link>https://dev.to/semooze</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F358113%2Fab087e67-89a4-4b6f-af7a-59ca206f1a20.jpeg</url>
      <title>DEV Community: Semooze</title>
      <link>https://dev.to/semooze</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/semooze"/>
    <language>en</language>
    <item>
      <title>Gradient Descent Behind The Scene</title>
      <dc:creator>Semooze</dc:creator>
      <pubDate>Sat, 31 Oct 2020 13:19:47 +0000</pubDate>
      <link>https://dev.to/semooze/gradient-descent-behind-the-scene-31ab</link>
      <guid>https://dev.to/semooze/gradient-descent-behind-the-scene-31ab</guid>
      <description>&lt;h2&gt;
  
  
  Machine Learning
&lt;/h2&gt;

&lt;p&gt;หากพูดถึงการทำเรียนรู้ด้วยเครื่องจักร (Machine Learning) แล้วกระบวนการหนึ่งที่เราต้องทำคือการปรับปรุงประสิทธิภาพ (optimzation ) ของโมเดล ซึ่งวิธีการหนึ่งที่ถูกนำมาใช้เพื่อช่วยปรับปรุงโมเดลคือ Gradient descent นั้นเอง&lt;/p&gt;

&lt;h2&gt;
  
  
  Regression
&lt;/h2&gt;

&lt;p&gt;หากเรามีข้อมูลชุดหนึ่งซึ่งแสดงความสัมพันธ์ระหว่างดัช BMI กับค่ารักษาค่ารักษาพยาบาล เป็นดังตารางนี้&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   bmi   | charges 
1  33.00 | 4449.460 
2  28.88 | 3866.850 
3  25.74 | 3756.621 
4  33.44 | 8240.589 
5  27.74 | 7281.505 
6  29.83 | 6406.410 
7  30.78 | 10797.336 
8  40.30 | 10602.380 
9  32.40 | 4149.730 
10 28.02 | 6203.900 
11 28.60 | 4687.790 
12 26.60 | 3046.060 
13 36.63 | 4949.758 
14 21.78 | 6272.477 
15 30.80 | 6313.750
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;เราสามารถนำมาพลอตกราฟเพื่อดูความสัมพันธ์ของข้อมูลได้ดังภาพด้านล่าง ซึ่งเมื่อดูจากจุดที่พลอตแล้ว เราก็ตัดสินใจว่าจะใช้สมการเส้นตรงเพื่ออธิบายความสัมพันธ์ของตัวแปรสองตัวนี้:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bLg2BnRv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sfpr8evixyjnlxqcqpxv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bLg2BnRv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sfpr8evixyjnlxqcqpxv.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;โดยสมการเส้นตรงมีสูตรดังนี้&lt;br&gt;
y = θ₀+θ₁x&lt;br&gt;
θ₀ เป็นระยะตัดแกน y (intercept)&lt;br&gt;
θ₁ เป็นความชันของเส้นตรง&lt;/p&gt;

&lt;p&gt;หากเราลากเส้นตรงสามเส้นเราจะทราบได้อย่างไรว่าเส้นตรงเส้นไหนให้ผลลัพธ์ที่ดีกว่ากัน หากเราจะนำฟังก์ชันของเส้นตรงนี้มาเป็นโมเดลในการพยากรณ์ค่ารักพยาบาลที่ต้องจ่าย โดยคำณวนค่ารักษาพยาบาลที่คาดว่าจะต้องจ่ายจากดัชนี BMI เราจะได้ว่า f(x) = y ซึ่ง f(x) ก็คือโมเดลเรานั่นเอง&lt;/p&gt;
&lt;h2&gt;
  
  
  Optimization
&lt;/h2&gt;

&lt;p&gt;ใน machine learning เมื่อเราได้สมการหรือฟังก์ชันที่ต้องการหาคำตอบแล้วมาแล้ว เราต้องมาทำการหาค่าพารามิเตอร์เพื่อให้โมเดลหรือสมการที่ได้มีค่าความผิดพลาดน้อยที่สุด จากตัวอย่างฟังชันก์แสดงความสัมพันธ์ระหว่างดัชนี BMI กับค่ารักษาค่ารักษาพยาบาล เราจะได้สมการเป็น f(x) = θ₀+θ₁x , x=ดัชนี bmi&lt;/p&gt;

&lt;p&gt;ซึ่งสิ่งที่เราต้องหาคือค่า θ₀ และ θ₁ ที่ใช้สำหรับสร้างเส้นตรงที่เมื่อเราแทน x เข้าไปแล้วให้ผลลัพธ์(y)ที่ใกล้เคียงค่าจริงมากที่สุด โดยอัลกอริทึมหนึ่งที่นิยมใช้หาค่าเหล่านี้ (minimize cost function) ก็คือ Gradient Descent นั้นเอง&lt;/p&gt;
&lt;h2&gt;
  
  
  Gradient Descent
&lt;/h2&gt;

&lt;p&gt;หลักการทำงานของ Gradient Descent สามารถเขียนเป็นสมการทางคณิตศาสตร์ได้ดังนี้&lt;br&gt;
θ = θ − α · ∇θJ(θ)&lt;br&gt;
α คือ Learning Rate &lt;br&gt;
J(θ) คือฟังก์ชันที่ใช้ในการประเมินผล (Cost/Loss function)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2xSkUYqI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kf21kpnzbpffgfxry4us.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2xSkUYqI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kf21kpnzbpffgfxry4us.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
ที่มา &lt;a href="https://developers.google.com/machine-learning/crash-course/reducing-loss/gradient-descent"&gt;https://developers.google.com/machine-learning/crash-course/reducing-loss/gradient-descent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;โดยอย่างที่ทราบกันว่าเราสามารถใช้อนุพันธ์ในการหาจุดต่ำสุดหรือจุดสูงสุดได้ ซึ่งจุดต่ำสุดก็คือจุดที่เราต้องการนั้นเอง ดังนั้น Gradient Descent จึงใช้หลักการนี้ในการหาค่าที่ให้เออเรอร์น้อยที่สุด&lt;/p&gt;
&lt;h3&gt;
  
  
  Learning Rate
&lt;/h3&gt;

&lt;p&gt;อัตราการเรียนรู้เป็นตัวเลขที่เปรียบเสมือนขนาดของก้าวแต่ละก้าวที่จะเดิน เพื่อไปให้ถึงก้นหลุม หากเราก้าวยาวไปก็จะเดินข้ามก้นหลุม แต่หากก้าวสั้นไปก็จะใช้เวลานาน ตามภาพด้านล่าง&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FpinsLFC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/h79uw8u1pn6gtho6iuz9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FpinsLFC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/h79uw8u1pn6gtho6iuz9.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Cost function/Lost function
&lt;/h3&gt;

&lt;p&gt;เป็นฟังก์ชันที่เอาไว้สำหรับประเมินว่าฟังก์ชันที่ได้มีความแม่นยำมากน้อยเพียงใด เช่น sum of square error หรือ &lt;br&gt;
หลัก ๆ แล้ว gradient descent แบ่งได้เป็น 3 แบบ&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Batch gradient descent&lt;/li&gt;
&lt;li&gt;Stochastic gradient descent&lt;/li&gt;
&lt;li&gt;Mini batch gradient descent&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Batch Gradient Descent
&lt;/h3&gt;

&lt;p&gt;หลักการของ Batch Gradient Descent คือ นำค่าที่ได้จากรอบเก่ามาคำนวณหาผลลัพธ์ในรอบถัดไป โดยนำข้อทุกชุดมาคำนวณ&lt;br&gt;
ตัวอย่างการทำคำนวณจากตาราง หากต้องการหาค่า  θ₀ และ θ₁จะได้ว่า&lt;/p&gt;

&lt;p&gt;Hypothesis: h(x) = θ₀–θ₁x&lt;br&gt;
Cost function: J(θ₀, θ₁) = Σ(h(xᵏ)-yᵏ)²&lt;br&gt;
Gradient calculation: θj = θj - α * &lt;sup&gt;1&lt;/sup&gt;⁄m * Σ(hθ(x&lt;sup&gt;(i)&lt;/sup&gt;) - y&lt;sup&gt;(i)&lt;/sup&gt;) * x&lt;sup&gt;(i)&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;ซึ่งหากเราทำการคำนวณโดยให้ค่าเริ่มต้นเป็นดังนี้ θ₀=1, θ₁=1, ⍺=0.0015 โดยคำนวณทั้งหมด 3 ครั้ง เราจะได้ผลลัพธ์ในดังนี้&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Iteration 1
Theta 0: 1 - 0.0015 * 0.1 * [
        (1 + 33.00 -  4449.46) + (1 + 28.88 -  3866.85) + 
        (1 + 25.74 -  3756.62) + (1 + 33.44 -  8240.59) + 
        (1 + 27.74 -  7281.51) + (1 + 29.83 -  6406.41) + 
        (1 + 30.78 - 10797.34) + (1 + 40.30 - 10602.38) + 
        (1 + 32.40 -  4149.73) + (1 + 28.02 -  6203.90) + 
        (1 + 28.60 -  4687.79) + (1 + 26.60 -  3046.06) + 
        (1 + 36.63 -  4949.76) + (1 + 21.78 -  6272.48) + 
        (1 + 30.80 -  6313.75) ]
Theta 1: 1 - 0.0015 * 0.1 * [
        (1 + 33.00 -  4449.46) * 33.00 + (1 + 28.88 -  3866.85) * 28.88 + 
        (1 + 25.74 -  3756.62) * 25.74 + (1 + 33.44 -  8240.59) * 33.44 + 
        (1 + 27.74 -  7281.51) * 27.74 + (1 + 29.83 -  6406.41) * 29.83 + 
        (1 + 30.78 - 10797.34) * 30.78 + (1 + 40.30 - 10602.38) * 40.30 + 
        (1 + 32.40 -  4149.73) * 32.40 + (1 + 28.02 -  6203.90) * 28.02 + 
        (1 + 28.60 -  4687.79) * 28.60 + (1 + 26.60 -  3046.06) * 26.60 + 
        (1 + 36.63 -  4949.76) * 36.63 + (1 + 21.78 -  6272.48) * 21.78 + 
        (1 + 30.80 -  6313.75) * 30.80 ]
Theta θ₀=10.06, θ₁=281.47

Iteration 2
Theta 0: 10.06 - 0.0015 * 0.1 * [
        (10.06 + 9288.51 -  4449.46) + (10.06 + 8128.85 -  3866.85) + 
        (10.06 + 7245.04 -  3756.62) + (10.06 + 9412.36 -  8240.59) + 
        (10.06 + 7807.98 -  7281.51) + (10.06 + 8396.25 -  6406.41) + 
        (10.06 + 8663.65 - 10797.34) + (10.06 + 11343.24 - 10602.38) + 
        (10.06 + 9119.63 -  4149.73) + (10.06 + 7886.79 -  6203.90) + 
        (10.06 + 8050.04 -  4687.79) + (10.06 + 7487.10 -  3046.06) + 
        (10.06 + 10310.25 -  4949.76) + (10.06 + 6130.42 -  6272.48) + 
        (10.06 + 8669.28 -  6313.75) ]
Theta 1: 281.47 - 0.0015 * 0.1 * [
        (10.06 + 9288.51 -  4449.46) * 33.00 + (10.06 + 8128.85 -  3866.85) * 28.88 + 
        (10.06 + 7245.04 -  3756.62) * 25.74 + (10.06 + 9412.36 -  8240.59) * 33.44 + 
        (10.06 + 7807.98 -  7281.51) * 27.74 + (10.06 + 8396.25 -  6406.41) * 29.83 + 
        (10.06 + 8663.65 - 10797.34) * 30.78 + (10.06 + 11343.24 - 10602.38) * 40.30 + 
        (10.06 + 9119.63 -  4149.73) * 32.40 + (10.06 + 7886.79 -  6203.90) * 28.02 + 
        (10.06 + 8050.04 -  4687.79) * 28.60 + (10.06 + 7487.10 -  3046.06) * 26.60 + 
        (10.06 + 10310.25 -  4949.76) * 36.63 + (10.06 + 6130.42 -  6272.48) * 21.78 + 
        (10.06 + 8669.28 -  6313.75) * 30.80 ]
Theta θ₀=6.35, θ₁=167.2

Iteration 3
Theta 0: 6.35 - 0.0015 * 0.1 * [
        (6.35 + 5517.60 -  4449.46) + (6.35 + 4828.74 -  3866.85) + 
        (6.35 + 4303.73 -  3756.62) + (6.35 + 5591.17 -  8240.59) + 
        (6.35 + 4638.13 -  7281.51) + (6.35 + 4987.58 -  6406.41) + 
        (6.35 + 5146.42 - 10797.34) + (6.35 + 6738.16 - 10602.38) + 
        (6.35 + 5417.28 -  4149.73) + (6.35 + 4684.94 -  6203.90) + 
        (6.35 + 4781.92 -  4687.79) + (6.35 + 4447.52 -  3046.06) + 
        (6.35 + 6124.54 -  4949.76) + (6.35 + 3641.62 -  6272.48) + 
        (6.35 + 5149.76 -  6313.75) ]
Theta 1: 167.2 - 0.0015 * 0.1 * [
        (6.35 + 5517.60 -  4449.46) * 33.00 + (6.35 + 4828.74 -  3866.85) * 28.88 + 
        (6.35 + 4303.73 -  3756.62) * 25.74 + (6.35 + 5591.17 -  8240.59) * 33.44 + 
        (6.35 + 4638.13 -  7281.51) * 27.74 + (6.35 + 4987.58 -  6406.41) * 29.83 + 
        (6.35 + 5146.42 - 10797.34) * 30.78 + (6.35 + 6738.16 - 10602.38) * 40.30 + 
        (6.35 + 5417.28 -  4149.73) * 32.40 + (6.35 + 4684.94 -  6203.90) * 28.02 + 
        (6.35 + 4781.92 -  4687.79) * 28.60 + (6.35 + 4447.52 -  3046.06) * 26.60 + 
        (6.35 + 6124.54 -  4949.76) * 36.63 + (6.35 + 3641.62 -  6272.48) * 21.78 + 
        (6.35 + 5149.76 -  6313.75) * 30.80 ]
Theta θ₀=7.84, θ₁=213.76
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ซึ่งเมื่อผ่านไป 3 ครั้งสมการที่เราจะได้เพื่อเป็นโมเดลคือ&lt;br&gt;
y = 7.84 + 213.76x , โดยที่ x เป็นดัชนี bmi และ y เป็นค่ารักษาพยาบาล&lt;/p&gt;

&lt;p&gt;ซึ่งเมื่อนำมาพลอ๊ตกราฟจะได้ดังรูปด้านล่าง&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wlPnbJcg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sg8v8ceyqis7p2myo39v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wlPnbJcg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sg8v8ceyqis7p2myo39v.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Stochastic Gradient Descent
&lt;/h3&gt;

&lt;p&gt;เนื่องจาก Batch gradient descent จะต้องนำข้อมูลทุกชุดมาคำนวณในแต่ละรอบ ทำให้ใช้เวลาในการคำนวณนาน Stochastic จึงถือกำเนิดขึ้นมาเพื่อลดเวลาในการประมวลผล การทำงานของ Stochastic gradient descent จะเหมือนกับ Batch เพัยงแต่ในแต่ละรอบจะสุ่มข้อมูลเพียงชุดเดียวมาทำการคำนวณ&lt;/p&gt;

&lt;p&gt;Hypothesis: h(x) = θ₀–θ₁x&lt;br&gt;
Cost function: J(θ₀, θ₁) = Σ(h(xᵏ)-yᵏ)²&lt;br&gt;
Gradient calculation: θj = θj - α * &lt;sup&gt;1&lt;/sup&gt;⁄m * (hθ(x&lt;sup&gt;(i)&lt;/sup&gt;) - y&lt;sup&gt;(i)&lt;/sup&gt;) * x&lt;sup&gt;(i)&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;ซึ่งหากเราทำการคำนวณโดยให้ค่าเริ่มต้นเป็นดังนี้ θ₀=1, θ₁=1, ⍺=0.0015 โดยคำนวณทั้งหมด 3 ครั้ง เราจะได้ผลลัพธ์ในดังนี้&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Iteration 1 Choose row : 3
Theta 0: 1 - 0.0015 * 0.1 * [(1 + 25.74 -  3756.62) ]
Theta 1: 1 - 0.0015 * 0.1 * [(1 + 25.74 -  3756.62) * 25.74 ]
Theta θ₀=1.37, θ₁=10.6

Iteration 2 Choose row : 1
Theta 0: 1.37 - 0.0015 * 0.1 * [(1.37 + 349.80 -  4449.46) ]
Theta 1: 10.6 - 0.0015 * 0.1 * [(1.37 + 349.80 -  4449.46) * 33.00 ]
Theta θ₀=1.78, θ₁=24.12

Iteration 3 Choose row : 4
Theta 0: 1.78 - 0.0015 * 0.1 * [(1.78 + 806.57 -  8240.59) ]
Theta 1: 24.12 - 0.0015 * 0.1 * [(1.78 + 806.57 -  8240.59) * 33.44 ]
Theta θ₀=2.52, θ₁=48.97
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4PIdbGn1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/lki8ayaihnjgg3r6cg8u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4PIdbGn1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/lki8ayaihnjgg3r6cg8u.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จะสังเกตุได้ว่าเส้นที่ลากของ Stochastic ไม่ดีเท่า Batch ที่เป็นเช่นนี้เพราะใช้ข้อมูลเพียงชุดเดียวในการทำงานแต่ละรอบนั้นเอง ถ้าปล่อยให้รันไปเรื่อย ๆ 15 รอบจะได้ดังนี้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ectHMxao--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bcuxbpnvxjygaddsn6wv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ectHMxao--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bcuxbpnvxjygaddsn6wv.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากภาพจะเห็นว่าค่าเข้าใกล้จุดที่เหมาะสมขึ้นเรื่อย ๆ&lt;/p&gt;

&lt;p&gt;หรือหากเปลี่ยน learning rate เป็นค่าต่าง ๆ ดังนี้&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;α = 0.01&lt;/th&gt;
&lt;th&gt;α = 0.03&lt;/th&gt;
&lt;th&gt;α = 0.05&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pt4gDR8B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/brfw35fzo5iul0l2gvy1.png" alt="Alt Text"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WyDwBiBG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7elhofx4xbt20jliahcd.png" alt="Alt Text"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oSuW1vdW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/j3ka3mow7l68dfbyh1a3.png" alt="Alt Text"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;จากผลลัพธ์ที่ได้ พบว่าการปรับ Learning Rate ให้อยู่ในค่าที่เหมาสะสมมีผลต่อระยะเวลาในการเรียนรู้มากทีเดียว&lt;/p&gt;

&lt;h3&gt;
  
  
  Mini batch Gradient Descent
&lt;/h3&gt;

&lt;p&gt;จะเห็นได้ว่า Stochastic แม้จะใช้เวลาสั้นแต่ในการเรียนรู้แต่ละรอบก็ไม่ค่อยเสถียร Mini batch จึงเกิดขึ้นเพื่อนำข้อดีของแต่ละวิธีมารวมกันนั้นเอง โดยแทนที่จะคำนวณข้อมูลทุกชุดแบบ Batch หรือเพียงชุดเดียวแบบ Stochastic Mini batch จะทำการคำนวณแต่ละรอบโดยใช้ข้อมูลจำนวน b ชุด &lt;/p&gt;

&lt;p&gt;Hypothesis: h(x) = θ₀–θ₁x&lt;br&gt;
Cost function: J(θ₀, θ₁) = Σ(h(xᵏ)-yᵏ)²&lt;br&gt;
Gradient calculation: θj = θj - α * &lt;sup&gt;1&lt;/sup&gt;⁄m * Σ(hθ(x&lt;sup&gt;(i)&lt;/sup&gt;) - y&lt;sup&gt;(i)&lt;/sup&gt;) * x&lt;sup&gt;(i)&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;ซึ่งหากเราทำการคำนวณโดยให้ค่าเริ่มต้นเป็นดังนี้ θ₀=1, θ₁=1, ⍺=0.0015, 3 โดยคำนวณทั้งหมด 3 ครั้ง เราจะได้ผลลัพธ์ในดังนี้&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Iteration 1 selected row 14-11
Theta 0: 1 - 0.0015 * 0.1 * [
        (1 + 21.78 -  6272.48) + 
        (1 + 32.40 -  4149.73) + 
        (1 + 28.60 -  4687.79) ]
Theta 1: 1 - 0.0015 * 0.1 * [
        (1 + 21.78 -  6272.48) * 21.78 + 
        (1 + 32.40 -  4149.73) * 32.40 + 
        (1 + 28.60 -  4687.79) * 28.60 ]
Theta θ₀=2.5, θ₁=41.27

Iteration 2 selected row 3-12
Theta 0: 2.5 - 0.0015 * 0.1 * [
        (2.5 + 1062.29 -  3756.62) + 
                (2.5 + 1231.08 -  6406.41) + 
                (2.5 + 1097.78 -  3046.06) ]
Theta 1: 41.27 - 0.0015 * 0.1 * [
        (2.5 + 1062.29 -  3756.62) * 25.74 + 
                (2.5 + 1231.08 -  6406.41) * 29.83 + 
                (2.5 + 1097.78 -  3046.06) * 26.60 ]
Theta θ₀=3.48, θ₁=68.81

Iteration 3 selected row 9-8
Theta 0: 3.48 - 0.0015 * 0.1 * [
        (3.48 + 2229.44 -  4149.73) + 
                (3.48 + 2301.01 -  8240.59) + 
                (3.48 + 2773.04 - 10602.38) ]
Theta 1: 68.81 - 0.0015 * 0.1 * [
        (3.48 + 2229.44 -  4149.73) * 32.40 + 
                (3.48 + 2301.01 -  8240.59) * 33.44 + 
                (3.48 + 2773.04 - 10602.38) * 40.30 ]
Theta θ₀=5.05, θ₁=126.41
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ซึ่งสามารถวาดกราฟได้ดังนี้ &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FS4qyuQy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/usdnet1vx3bjldm69vom.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FS4qyuQy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/usdnet1vx3bjldm69vom.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Gradient Descent เป็นวิธีการหนึ่งในการทำ Optimization สำหรับ Model โดยหลัก ๆ มีอยู่ 3 แบบแต่ละแบบมีข้อดีและข้อเสียแตกต่างกันไป&lt;/p&gt;

&lt;p&gt;Batch เสถียรแต่ช้า&lt;br&gt;
Stochastic เร็วแต่ไม่ค่อยเสถียร&lt;br&gt;
Mini batch นำข้อดีมารวมกันแต่ก็ไปไม่สุดในด้านใดด้านหนึ่ง &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kpFCQ3gl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/htpvhnz0ua9sqgdfimcn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kpFCQ3gl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/htpvhnz0ua9sqgdfimcn.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ครั้งหน้าเราจะนำ Linear Regression และ Gradient descent ไปช่วยในการสร้างโมเดลเพื่อพยากรณ์ราคาบ้านกัน&lt;/p&gt;

</description>
      <category>gradientdescent</category>
      <category>stochastic</category>
      <category>batch</category>
      <category>minibatch</category>
    </item>
  </channel>
</rss>
