สรุปว่า Alan Turing เขาทำอะไรยังไง?

**[SPOILERS ALERT!] บทความนี้มีหลายส่วนที่สปอยล์เนื้อหาจากหนัง The Imitation Game แต่ยังไงมันก็คือเนื้อหาพาร์ทวิชาการ + ประวัติศาสตร์อยู่ดี ถ้าสนใจอยากอ่านก็ลุยต่อได้เลยครับ :D**

ช่วงนี้กระแส The Imitation Game กำลังมานะครับ มาอะไรล่ะ! หนังมันเข้าจนออกจะหมดแล้ว!

อย่างที่เห็นครับ… คือผมกะจะโพสต์เรื่องนี้ตั้งแต่เมื่อเกือบเดือนก่อน แต่ไม่มีเวลาเขียนให้จบ มีดราฟต์ไว้ แล้วก็ค้างอยู่ที่ 60-70% ไม่ได้โพสต์ซักที ในที่สุดวันนี้ก็ได้โพสต์แล้ววว

คนที่เข้าไปดูหนังแล้วก็อาจจะเห็นแล้วว่า Alan Turing เป็นคนสำคัญในสาย Computer Science (ที่ไทยเรียกว่าวิทยาการคอมพิวเตอร์) แต่อาจจะยังไม่รู้ละเอียดว่าไอ้ที่เขาทำน่ะ มันคืออะไร แล้วเจ๋งยังไง ผมเลยจะหยิบงานดังๆ ของเขา 3 ชิ้นมาลองอธิบายดูครับ

(เคลมไว้ก่อนว่าถึงผมจะเรียนวิศวะคอม แต่หลายๆ เรื่องเป็นเนื้อหาปี 3-4 ครับ ยังไม่ได้เรียนละเอียดๆ อาจจะมีพลาดบ้างครับ)

แกะโค้ด Enigma

*เพื่อความไม่สับสน ผมขอแยกคำว่า decrypt (ผู้รับสารแปลรหัสลับเพื่ออ่าน) กับ break the code (คนนอกพยายามเข้ามาอ่านข้อความลับ) กับ  เป็นคำว่า “ถอดรหัส(ลับ)” กับ “แกะรหัส(ลับ)” นะครับ

ก่อนอื่น เครื่องอินิกมาหน้าตาเป็นอย่างงี้

enigma

ดัดแปลงจากรูปของ Wikipedia

วิธีใช้ง่ายมากครับ เซ็ตเครื่อง พิมพ์ข้อความที่จะทำรหัสลับเข้าไป พอกดแต่ละตัวก็จะมีไฟขึ้นเป็นตัวอักษรที่เข้ารหัสลับแล้ว จดไว้ทีละตัวก็จะออกมาเป็นรหัสลับที่ใครเอาไปก็อ่านไม่รู้เรื่อง ส่วนถ้าจะรับสารที่เข้ารหัสไว้ ก็ง่ายครับ แค่เซ็ตเครื่องให้เหมือนตอนเข้ารหัส แล้วก็พิมพ์รหัสที่ได้มาเข้าไป ไฟก็จะติด จดไว้ทีละตัว ก็จะได้ข้อความต้นทางกลับมา (มีลิงก์ให้ลองเล่นข้างล่างครับ)

ประเด็นอยู่ที่การเซ็ตเครื่องนี่แหละครับ มันมีให้เซ็ต 2 ที่ ที่แรกคือ Rotor (เฟืองหมุนๆ ข้างบน) เลือกเฟืองมาชุดนึง แล้วก็หมุนไว้สักตำแหน่ง อีกที่คือ Plugboard ข้างล่าง เอาแจ็คมาเสียบจับคู่ตัวอักษรบนบอร์ด อยากจับกี่คู่ก็ได้ มากสุด 10 คู่ ไม่จับเลยก็ได้ ทีนี้ถ้าเกิดคนนอกมีอินิกมา แต่ไม่รู้วิธีเซ็ตเครื่องที่ใช้เข้ารหัส ก็เป็นไปไม่ได้ที่จะถอดข้อความกลับมาครับ ซึ่งถ้าจะสุ่มวิธีเซ็ตเครื่องขึ้นมาซักแบบเนี่ย โอกาสถูกมัน 1 ใน 159 ล้านล้านล้าน ถ้าไล่ถึกลองไปทีละแบบ สมมติว่าแบบละวิ ก็จะใช้เวลาอย่างมาก 5 ล้าน ล้าน ปี… อืม… โลกเพิ่งเกิดมา 4600 ล้านปีเองนะ…

ว่าแต่อะไรที่ทำให้ตอนนั้น โค้ดจากเครื่องอินิกมาขึ้นชื่อว่า “แกะไม่ได้”?

สมมติว่ามีรหัสนึงมาให้อ่าน: NYNAGHEVAT อาจจะเดาง่ายๆ ก่อนว่า N สองตัวที่เจอเนี่ย มันมาจากตัวเดียวกัน (ซึ่งใช่ครับ รหัสข้างบนนี้คือคำว่า ALANTURING เข้ารหัสลับแบบ ROT13) แต่โค้ดจากอินิกมามันไม่เป็นอย่างนั้น

ผมลองเอาคำว่า ALANTURING เข้าอินิกมาในลิงก์ข้างล่าง ได้ออกมาเป็น QOBBNNHQTR… เอาไงล่ะทีนี้ A ตัวนึงออกมาเป็น Q อีกตัวดันเป็น B ส่วน B สองตัวในโค้ดก็แปลเป็นคนละตัวกันอีก! ตรงนี้แหละที่เค้าว่าแกะไม่ได้ ที่เป็นอย่างนี้เพราะทุกครั้งที่กดแป้น Rotor จะหมุนทำให้ชุดอักษรต้นฉบับ/ปลายทางเปลี่ยนไปทุกรอบ

แต่เราก็รู้กันแล้วว่า อลัน ทัวริ่ง แกะโค้ดนี้ได้

ที่แกะได้เพราะมีจุดอ่อนอยู่ 2 อย่าง อย่างแรกคือด้วยกลไกของมัน ตัวอักษรที่เข้าไปกับออกมาจะเป็นคนละตัวกันคือสมมติเอาตัว A เข้าไป โค้ดมันไม่ออกมาเป็น A แน่ๆ อย่างที่สองคือ เราพอจะเดาคำที่คิดว่าอยู่ในโค้ดได้ เช่น ทุกวันตอน 6 โมงจะมีรายงานสภาพอากาศ เราก็พอจะเดาได้ว่าน่าจะมีคำพวก “รายงานสภาพกาศ” หรือ “Heil Hitler” ด้วยสองอย่างนี้เราก็เอาคำที่สงสัยมาลองไล่เทียบในโค้ด ก็จะพอเดาได้ว่าคำที่อยากหาอยู่ที่ไหน

bombe

Turing กับเครื่อง Bombe (ที่ในหนังเรียกว่า Christopher) (ภาพจาก The Imitation Game © 2014 – The Weinstein Company)

สิ่งที่ทัวริ่งทำคือสร้างเครื่อง Bombe ขึ้นมาลองไล่หาวิธีเซ็ตเครื่องที่ว่าดูโดยใช้จุดอ่อนสองข้อนั้นกับเทคนิคอื่นๆ มาตัดชอยส์ ทำให้ไม่ต้องไล่ครบทั้ง 159 ล้านๆๆ แบบ ลดเวลาแกะโค้ดลงมาเหลือแค่ไม่เกิน 20 นาที พอแกะโค้ดออก ก็จะรู้การสื่อสารลับจากเยอรมันของวันนั้นได้ทั้งวัน

พออังกฤษเห็นจุดอ่อนนี้ของอินิกมาก็เอาไอเดียไปทำต่อครับ ออกมาเป็นเครื่อง TypeX ที่รหัสบางตัวแปลแล้วได้ตัวเดิมได้ พอเยอรมันมาเห็นแล้วแก้รหัสไม่ได้ ก็ยอมว่าเครื่องของอังกฤษดีกว่า… ซะงั้น

Turing Machine

ต้นแบบของคอมพิวเตอร์ที่ในหนังพูดถึง ไม่ได้หมายถึงเครื่อง Bombe แต่เป็นอีกงานของ Turing ซึ่งถือกันว่าเป็น “พิมพ์เขียวของคอมพิวเตอร์ยุคใหม่”

Turing Machine เป็นเครื่องที่มีคอนเซปต์ง่ายๆ ครับ ส่วนประกอบหลักๆ มึสองสามส่วน อย่างแรกคือจะมีแถบเทปยาวมากๆ แบ่งเป็นเป็นช่องๆ แต่ละช่องมีเลข 0 ไม่ก็ 1 อยู่ อีกส่วนก็คือหัวอ่าน/เขียนเทปที่ว่า ซึ่งจะเลื่อนซ้าย/ขวา ไปบนเทปได้

นอกจากตัวเครื่องแล้วก็จะมีการ์ดคำสั่งอยู่ แต่ละใบมีเลข แล้วก็จะเขียนเงื่อนไขไว้ว่า ถ้าอ่านได้เลข 1 (หรือ 0) ให้เขียนเลขอะไรทับ เลื่อนหัวอ่านไปทางไหน แล้วอ่านการ์ดเบอร์ไหนต่อ เมื่อเริ่มเครื่อง มันก็จะทำตามคำสั่งในการ์ดไปเรื่อยๆ จนกว่าจะเจอการ์ด “หยุด! (HALT)” พอหยุดก็เป็นอันจบพิธี ตัวเลขที่อยู่บนเทปก็คือผลของโปรแกรมที่รันไปนั่นเอง

tm

Turing Machine (ดัดแปลงภาพมาจาก computerphile)

เครื่องนี้ไม่ได้มีอยู่จริง เป็นเครื่องที่มโนขึ้นมาครับ ว่าแต่เครื่องทำแค่นี้ จะเอาไปทำอะไรได้? เห็นอย่างนี้ก็เถอะ เครื่องแค่นี้แหละ ทำได้ทุกอย่างที่คอมพิวเตอร์ในปัจจุบันทำได้! (บางทีเยอะกว่าด้วย) โดยที่ถ้ามองเครื่องนี้เป็นโปรแกรมคอมฯ ตัวนึง ตัวแถบเทปเริ่มต้นก็จะเป็น input การ์ดคำสั่งก็คือตัวโปรแกรม การเขียนโปรแกรมก็คือการเขียนกับจัดชุดการ์ดคำสั่งที่ว่า พอเอา Turing Machine มารันผ่านการ์ดชุดที่เขียน ผลลัพธ์ขิองโปรแกรมก็จะออกมาบนแถบเทปนั่นเอง ซึ่งทางคอมฯ จะเรียกอุปกรณ์อะไรก็ตามที่ทำทุกอย่างที่ Turing Machine ทำได้ว่า “Turing-complete” (อย่างเช่นคอมพิวเตอร์)

ด้วยความที่ดูง่ายแต่ทำอะไรได้เยอะของมัน ทำให้นักคณิตศาสตร์หรือคนในสาขา Comp Sci ใช้เครื่องนี้เป็น Math Model ในการสร้างทฤษฎีหลายๆ อย่างของคอมพิวเตอร์ขึ้นมา และเครื่องนี้ก็เป็นแกนสำคัญของสาขาหนึ่งทางคอมที่เรียกว่า Computational Theory เลยทีเดียว

พอเป็น Math Model แล้วทำอะไรได้บ้าง? นอกจากจะเป็นต้นแบบของคอมพิวเตอร์แล้ว มันก็ทำให้เราตอบปัญหาที่น่าสนใจเกี่ยวกับคอมพิวเตอร์ได้ครับ เช่น อะไรที่คอมพิวเตอร์ทำได้/ไม่ได้? อัลกอริทึมหรือโปรแกรมนี้ทำงานเร็วขนาดไหน? ทำงานถูกจริงมั้ย? โจทย์นี้มีวิธีแก้ที่เร็วกว่านี้มั้ย? อย่างงี้เป็นต้น รวมไปถึงทฤษฎีต่างๆ อย่างเช่น Halting Problem (มีโปรแกรมให้ ถามว่าโปรแกรมนี้มีวันจบมั้ย? — ซึ่ง Alan Turing เป็นคนพรูฟเองด้วยเครื่อง Turing Machine ว่าไม่มีวิธีตายตัวที่จะตอบได้) ที่ช่วยตอบคำถามหลายๆ อย่างเกี่ยวกับการทำงานของคอมพิวเตอร์

Turing Test

ข้ามไปอีกสายนึงที่เรียกว่า AI หรือ Artificial Intelligence (ปัญญาประดิษฐ์) สาขานี้อยากจะทำให้เครื่องจักรสามารถ “คิด” ได้เหมือนมนุษย์ แน่นอนครับว่าศาสตร์อะไรที่มายุ่งกับมนุษย์มันจะต้องเจอกับคำถามปรัชญาเพียบ อย่างเช่น อะไรคือการ “คิด”? หรือจะวัดผลยังไงว่าเครื่องจักรคิดได้เหมือนมนุษย์?

คำถามว่า จะวัดผลยังไง? ก็มีคำตอบจาก Alan Turing ไว้คือ “Imitation Game”

“Now you decide am I a machine, am I a human, am I a war hero, or am I a criminal.
” — Alan Turing, The Imitation Game (2014)

เดิมที Imitation Game เป็นเกมง่ายๆ ก็คือให้เราเขียนโน้ตคุยกับคนปริศนา 2 คน ชาย 1 หญิง 1 ชายคนนั้นจะพยายามตีเนียนเป็นผู้หญิง (หรือกลับกัน) แล้วเราก็จะทายว่าคนไหนเป็นผู้หญิง? (หรือผู้ชาย)

เมื่อไอเดียนี้เปลี่ยนมาใช้กับ AI ก็จะแทนที่สองคนนั้นด้วย คอมพิวเตอร์ กับ คน ถ้าคุยกัน 5 นาทีแล้วเครื่องหลอกคนทายว่าเป็นคนได้สำเร็จ ก็ถือว่าผ่าน ซึ่ง Imitation Game เวอร์ชั่น “คนหรือเครื่อง?” นี่แหละครับที่เรียกว่า Turing Test

tt

Turing Test (ภาพจาก WIkipedia)

ฟังๆ ดูก็เป็นวิธีการเช็คประสิทธิภาพของ AI ที่น่าจะดีนะครับ และข่าวดีคือ เมื่อปีที่แล้วมีโปรแกรมชื่อ Eugene Goostman ผ่าน Turing Test ได้แล้ว

ส่วนข่าวร้ายก็คือ โปรแกรมนี้ไม่ได้ฉลาดล้ำอย่างที่ใครหลายคนหวังไว้

Eugene Goostman ถูกวางคาร์แรกเตอร์ไว้เป็นเด็กยูเครนอายุ 13 ซึ่งคนที่เขียนขึ้นมาใช้หลักแนวๆ จิตวิทยา และความที่ Eugene เป็นเด็กมาหลอก อย่างเช่น ชวนคุยเรื่องเกม ฯลฯ หรือถ้าถามอะไรไป ก็ตอบแบบย้อนๆ คนถาม หรือถ้าไม่รู้จะตอบอะไรก็เบี่ยงประเด็น เปลี่ยนเรื่องไป เท่านี้ก็หลอกกรรมการได้มากกว่า 30% ถือว่าผ่าน Turing Test ไปอย่างไม่เป็นที่น่าพอใจกันในวงการเท่าไหร่

จริงๆ Turing Test มีคนแย้งหลายอย่างมานานแล้วครับ เพราะคอนเซปต์ของการ “คิด” มันวัดผลยากอยู่แล้ว ข้อแย้งเด่นๆ อันนึงก็คือ “Chinese Room Problem” สมมติว่าเราแชทกับคนจีนอยู่ (ทำไมต้องจีน ไม่รู้เหมือนกัน) เราไม่รู้เรื่องภาษาจีนเลย แต่ข้างตัวเรามีหนังสือบอกว่า ถ้าเค้าถามอย่างงี้มา ให้ตอบอย่างงั้นนะ แล้วเราก็ทำตาม ปัญหาคือ เราจะดูเหมือนพูดภาษาจีนได้ แต่จริงๆ แล้วไม่เลย ก็เป็นคำถามกลับมาที่ AI ว่า มัน “ฉลาด” จริงๆ หรือมันแค่ทำตามคู่มือ

สามอย่างที่ว่ามาก็เป็นงานดังๆ ของ Alan Turing ครับ หวังว่าคงจะอ่านแล้วไม่งงกัน (ฮา) และอย่างที่ผมบอกไว้ ถ้าใครยังงงๆ หรืออยากอ่านต่อจากแหล่งอ้างอิงที่ผมใช้ ก็ตามลิงก์ข้างล่างพวกนี้ไปได้เลยครับผม รวมไว้ให้ประมาณนึง แล้วพบกันโอกาสหน้าครับ 🙂

อ้างอิง

หลักการทำงานของอินิกมา: วิดีโอ 158,962,555,217,826,360,000 จาก numberphile
วิธีแกะรหัสอินิกมา: วิดีโอ Flaw in the Enigma Code จาก numberphile

Turing Machine: วิดีโอ Turing Machines Explained จาก Computerphile

ข่าว Eugene ผ่าน Turing Test
จาก CNN: Passing the Turing test
จาก scishow: Eugene Goostman & The Science of What Digusts You

อื่นๆ ที่น่าสนใจ

เครื่องอินิกมาออนไลน์: http://enigmaco.de/enigma/enigma.html

ROT13: บทความ ROT13 จาก Wikipedia

เกม Turing Machine: Google Doodle ครบรอบ 100 ปี Alan Turing
(วิธีการทำงานไม่เหมือนกับที่อธิบายในนี้เป๊ะ แต่หลักคล้ายๆ กัน เขียน/ลบ/เลื่อนหัวอ่านเหมือนกัน)

เกี่ยวกับ Halting Problem: วิดีโอ Turing & The Halting Problem จาก Computerphile

ประวัติ Alan Turing ตรงไหนในหนังจริงไม่จริงบ้าง: ชำแหละ Imitation game: เรื่องไหนจริงเรื่องไหนแต่ง ชีวิตและการคงอยู่ของทัวริ่ง [สปอยล์หนักมาก] จาก พันทิป

Leave a comment