AND Gate Neuron ด้วย Python Artificial Neural Network
Workshop นี้แสดงตัวอย่างการสร้าง Neuron ให้เป็น AND Gate โดยใช้ Python ช่วยกำนวณและปรับ weight ให้กับระบบ (โค้ด Python ง่ายๆ ไม่ต้องใช้ไลบรารีใด ๆ) ค่า target ให้ใช้ AND Gate ves Workshop 2
def and_gate(x1, x2):
w0 = -0.5 # bias
w1 = 0.5
w2 = 0.5
threshold = 0.0
s = w0 + (w1 * x1) + (w2 * x2)
if s >= threshold:
result = 1
else:
result = 0
print('output y={} [s={}]' . format(result, s))
and_gate(0, 0)
and_gate(0, 1)
and_gate(1, 0)
and_gate(1, 1)
Code language: Python (python)
output y=0 [s=-0.5] ผลลัพธ์ที่ได้จากอินพุต x1=0, x2=0 ถูก
output y=1 [s=0.0] ผลลัพธ์ที่ได้จากอินพุต x1=0, x2=1 ถูก
output y=1 [s=0.0] ผิด
output y=1 [s=0.5] ถูก
Code language: Python (python)
รันแล้วจะได้ผลลัพธ์ Output หรือ y เท่ากับรอบแรกของ Workshop 2 ซึ่งยังมี Error อยู่ คือ ถูก 2 เคส ผิด 2 เคส ต้องทำ Backpropagation ปรับ weight สมมุติว่าปรับ w1,w2 เป็นค่าใหม่ ใช้ค่า 0.4 เหมือน Workshop ที่ผ่านมา หรือลองค่าใหม่ก็ได้ เช่น ลอง 0.2 โดยแก้โค้ดบรรทัด w1,w2 ดังนี้แล้วรันใหม่
w1 = 0.2
w2 = 0.2
Code language: Python (python)
จะได้ผลลัพธ์ Output หรือ y ดังด้านล่าง เมื่อเทียบกับ target (ตาราง AND Gate ของ Workshop 2) พบว่า ผิด 1 เคส
output y=0 [s=-0.5] ถูก
output y=0 [s=-0.3] ถูก
output y=0 [s=-0.3] ถูก
output y=0 [s=-0.09999999999999998] ผิด
Code language: Python (python)
ผลลัพธ์ยังมี Error อยู่ แสดงว่าการปรับค่า weight ยังไม่ได้ที่ ต้องทำ Backpropagation ปรับ weight อีก (ปรับ w0, W1, W2 ตัวใดหรือทั้งหมดก็ได้) ในที่นี้สมมุติว่าปรับ W1, w2 เป็นค่าใหม่ใช้ค่า 0.45 โดยแก้โค้ดบรรทัด W1, w2 ดังนี้แล้วรันใหม่
..
w1 = 0.45
w2 = 0.45
..
Code language: Python (python)
output y=0 [s=-0.5] ถูก
output y=0 [s=-0.04999999999999999] ถูก
output y=0 [s=-0.04999999999999999] ถูก
output y=10 [s=-0.4] ถูก
Code language: Python (python)
เมื่อเทียบกับ target (ตารางของ Workshop 2) จะเห็นว่าถูกต้องทั้งหมดทุกเคส ไม่มี Error แล้ว ไม่ต้องย้อนกลับไปปรับค่า weight อีก เท่ากับว่า Neuron หรือ Perceptron นี้ได้ทำการสอนหรือ Train เรียบร้อยแล้ว