Mar 23, 2016

ใบเฟิร์น Barnsley

ความสวยงามอย่างหนึ่งของใบเฟิร์น คือ รูปทรงของส่วนย่อยๆ ภายในใบจะมีความคล้ายคลึงกับใบเฟิร์นทั้งใบ ภาษาคณิตศาสตร์มีชื่อเรียกพิเศษให้รูปทรงเหล่านี้เลยว่า fractal แต่ถ้าใครคุ้นเคยกับศัพท์สายคอมพิวเตอร์มากกว่า ก็อาจจะมองว่ามันเป็น recursion ก็ได้


การสร้าง fractal รูปใบเฟิร์นอย่างง่าย สามารถอธิบายคร่าวๆ ได้ด้วยขั้นตอนวิธีนี้


  1. ลากเส้นตรงความยาว $l$ ไม่ต้องเยอะมากนัก แล้วเลือกปลายข้างหนึ่งไว้เป็นปลายที่จะต่อยอดออกไป
  2. ที่ปลายยอดของเส้นตั้งต้น ทำสองขั้นตอนต่อไปนี้เพื่อลากเส้นเพิ่ม 3 เส้น
    • ลากเส้นตรงความยาว $0.2$ เท่าของความยาวเส้นตั้งต้น ในทิศทางตั้งฉากกับเส้นตั้งต้นทั้งสองข้าง
    • ลากเส้นตรงความยาว $0.8$ เท่าของความยาวเส้นตั้งต้น ในทิศทางต่อขึ้นไปตรงๆ จากเส้นตั้งต้น
  3. สำหรับแต่ละเส้นที่ลากต่อออกมาในข้อ 2 นั้น เลือกปลายด้านที่ว่างๆ ไว้เป็นปลายต่อยอด แล้ววนกลับไปทำขั้นตอนที่ 2 โดยเปลี่ยนมาใช้เส้นตั้งต้นเป็นเส้นที่ได้จากข้อ 2 แทน (คิดซะว่าเส้นใหม่นี้ยาว $l$) ทำไปเรื่อยๆ จนกว่าจะพอใจผลลัพธ์

วิธีการข้างต้นจะให้ผลลัพธ์เป็นรูปใบเฟิร์นเรียบๆ ตรงๆ ไม่หวือหวานัก แต่ก็มีนักคณิตศาสตร์นามว่า Michael Barnsley ได้เขียนสมการกำหนดมุมและจัดตำแหน่งของการต่อยอดให้สวยงามมีลูกเล่น เนื่องจากเขาเป็นคนแรกที่เขียนเรื่องนี้ไว้ตั้งแต่ปี 1993 ทุกคนเลยพากันเรียกใบเฟิร์นที่สวยงามเป็นเอกลักษณ์นี้ว่า ใบเฟิร์น Barnsley



พูดให้รัดกุมเป็นภาษาคณิตศาสตร์ก็คือ การสร้างใบเฟิร์น Barnsley เริ่มจากลากเส้นแรกยาว $1.6$ หน่วยจากจุด $(0,0)$ ขึ้นไปตามแกน $y$ แล้วเอาเส้นนั้นมาวาดซ้ำๆ อีกครั้ง จากเลื่อนและปรับขนาดด้วยสมการดังนี้


f_1(x, y) = [ 0.85, 0.04; -0.04, 0.85 ] [ x; y ] + [ 0; 1.6 ]
f_2(x, y) = [ 0.20 & -0.26 \\ 0.23 & 0.22 ] [ x; y ] + [ 0; 1.6 ]
f_3(x, y) = [ -0.15, 0.28; 0.26 & 0.24 ] [ x; y ] + [ 0; 0.44 ]

โดย $f_1, f_2, f_3$ คือสมการสำหรับคำนวณรูปร่างก้านที่ต่อยอดขึ้นข้างบน ก้านที่เอียงไปด้านซ้าย และก้านที่พลิกตัวแล้วเอียงไปด้านขวา ตามลำดับ


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


from PIL import Image, ImageDraw

def transform(matrix, xy):
    return [sum(e * p for e, p in zip(row, xy)) for row in matrix]

def translate(vector, xy):
    return [e + p for e, p in zip(vector, xy)]

class BarnsleyFern(object):
    affines = [([[0.85, 0.04], [-0.04, 0.85]], [0, 1.6]),
               ([[0.20, -0.26], [0.23, 0.22]], [0, 1.6]),
               ([[-0.15, 0.28], [0.26, 0.24]], [0, 0.44])]

    def __init__(self, depth=10, size=(800,800)):
        self.image = Image.new('RGB', size)
        self.draw = ImageDraw.Draw(self.image)
        self.iterate([0.0, 0.0], [0.0, 1.6], depth)

    def canvas_coordinate(self, xy):
        width, height = self.image.size
        return [width/2 + xy[0]*width/10, height - xy[1]*height/10]

    def linespec(self, xy0, xy1):
        return self.canvas_coordinate(xy0) + self.canvas_coordinate(xy1)

    def draw_too_small(self, xy0, xy1, pos=2):
        return all(round(a, pos) == round(b, pos) for a, b in zip(xy0, xy1))

    def iterate(self, xy0, xy1, depth, affine=None):
        if depth == 0:
            return
        if affine is not None:
            xy0 = translate(affine[1], transform(affine[0], xy0))
            xy1 = translate(affine[1], transform(affine[0], xy1))
        if self.draw_too_small(xy0, xy1):
            return
        self.draw.line(self.linespec(xy0, xy1), fill='#0C3')
        for affine in self.affines:
            self.iterate(xy0, xy1, depth-1, affine)



fractal ยังมีรูปร่างอื่นๆ อีกมากมาย ทั้งที่พบได้ในธรรมชาติ เช่น ดอกทานตะวัน บรอคโคลี เกล็ดหิมะ หรือมากจากการสังเคราะห์ขึ้นอย่าง สามเหลี่ยม Sierpinski หรือ เซ็ต Mandelbrot


แต่ความมหัศจรรย์ของ fractal ที่แท้จริง คือเราไม่สามารถรู้ได้เลยว่าตอนนี้เรากำลังอยู่ตรงไหนของมันกันแน่ ลองคิดภาพว่าตัวเองเป็น Ant-Man ที่จะปรับขนาดตัวให้ไม่ใหญ่ไปกว่าก้านใบเฟิร์นที่ยืนอยู่ได้ แล้วก็ลองไปยืนอยู่บนใบเฟิร์นข้างต้นดู ณ ขณะหนึ่งเราอาจจะคิดว่าตัวเองอยู่บนก้านที่ใหญ่ที่สุดแล้ว แต่นอกจากขนาดที่แตกต่างกัน ก้านที่เราคิดว่าใหญ่ที่สุดนั้น ก็ไม่ได้มีอะไรที่แตกต่างจากก้านย่อยก้านอื่นๆ เลย หากเราเดินย้อนกลับไปเรื่อยๆ อาจพบว่าก้านที่เราคิดว่าใหญ่ที่สุดนั้น เป็นเพียงแค่ก้านย่อยที่แตกแขนงแยกออกมาก็เป็นได้


ในทางเดียวกัน เราก็ไม่สามารถแน่ใจได้ว่าตรงไหนคือจุดปลายของใบเฟิร์น เพราะยิ่งเดินค้นหาปลายใบเท่าไหร่ เราก็จะยิ่งตัวเล็กลงๆ และพบว่าใบเฟิร์นนั้นมีรูปร่างเหมือนเดิมไม่เปลี่ยนแปลง


ก็เปรียบเหมือนความรู้ เราจะรู้ได้ไงว่าอะไรคือพื้นฐานที่แท้จริงกันแน พันปีก่อนเราอาจคิดว่าถ้าได้รู้จักอะตอมก็คือรู้ถึงพื้นฐานแห่งทุกสรรพสิ่งแล้ว แต่ไม่กี่ร้อยปีก่อนเราเพิ่งพบว่าอะตอมยังแบ่งแยกย้อยลงไปได้อีกเป็นโปรตอน นิวตรอน อิเล็กตรอน และปฏิรูปพื้นฐานความรู้ด้านเคมีขึ้นใหม่ ส่วนปัจจุบันเรายังแบ่งย่อยสิ่งต่างๆ ลงไปได้อีกเป็นควาร์ก หรือแม้กระทั่งเสนอทฤษฎีสตริงซึ่งเป็นพื้นฐานของทุกอนุภาค


อีกนัยหนึ่ง พื้นฐานความรู้ที่ลึกเกินไปอาจเป็นสิ่งไม่จำเป็น หรือยิ่งไปกว่านั้น มันอาจเป็นตัวถ่วงให้เราไม่กล้าที่จะเดินหน้าสำรวจโลกใหม่ๆ ก็เป็นได้


Mar 14, 2016

มองสมการแล้วรู้สึกเป็นยาขม มองให้เห็นเป็นภาพสิจะได้สนุก

ตอนอยู่ม.ปลาย NutSnC เคยให้หนังสือ Proof Without Words มา คือตอนนั้นเรามองว่าคณิตศาสตร์สนุกอยู่แล้ว แต่พอได้เล่มนี้มาอ่านยิ่งรู้สึกสนุกเข้าไปใหญ่ เลยคิดว่ามันน่าจะช่วยให้ใครที่คิดว่าคณิตศาสตร์ไม่สนุก รู้สึกสนุกไปกับมันได้บ้าง

แนวคิดง่ายๆ ของหนังสือคือโยนสมการที่มีแต่ตัวหนังสือยั๊วเยี๊ยะทิ้งไปเลย แล้วเปลี่ยนมาคิดมันด้วยสิ่งที่จับต้องได้มาขึ้นอย่างรูปภาพแทน



ตัวอย่างหนึ่งในหนังสือ เช่น ต้องการพิสูจน์อนุกรมจำนวนเต็ม

1 + 2 + 3 + ... + n = n(n+1)/2

ก็ให้คิดด้วยลูกแก้วแทน ลูกแก้วแถวแรกมี 1 ลูก แถวที่สองมี 2 ลูก ลงไปเรื่อยๆ จนแถวสุดท้ายที่มี n ลูก

ถ้าจัดตำแหน่งลูกแก้วอย่างสวยๆ จะได้ว่ามันเป็นรูปสามเหลี่ยมนั่นเอง ดังนั้นพอเอาสามเหลี่ยมสองชุดมาประกบกันก็จะได้สี่เหลี่ยม ซึ่งก็ง่ายแล้วเพราะตอนนี้แค่หาพื้นที่ก็ได้คำตอบ


แต่ลองให้ใช้สมการอย่างเดียวอธิบายดู จะพบกับความยาวเฟื้อยเช่นนี้

sum  i  for i=1 to n = 1 + 2 + 3 + ... + n
    2 sum  i  for i=1 to n = 2(1 + 2 + 3 + ... + n)
                           = (1 + 2 + 3 + ... + n) + (1 + 2 + 3 + ... + n)
                           = (1 + 2 + 3 + ... + n) + (n + ... + 3 + 2 + 1)
                           = (1+n) + (2+n-1) + (3+n-2) + ... + (n+1)
                           = (n+1) + (n+1) + (n+1) ... + (n+1)
                           = n(n+1)
      sum  i  for i=1 to n = n(n+1)/2

เทียบกันแล้ว การพิสูจน์ด้วยรูปภาพง่ายและสวยงามกว่ากันเยอะเลย



วิธีข้างต้นยังนำไปประยุกต์ใช้กับสมการอื่นๆ ได้อีกมากมาย เช่น

  • อนุกรมจำนวนเต็มคี่
  • อนุกรมจำนวนเต็มยกกำลังสอง
  • อนุกรมจำนวนเต็มยกกำลังสาม
  • อนุกรมเรขาคณิต

ฝากไว้เป็นการบ้านให้ลองกลับไปวาดรูปเล่นกันดูครับ :3

Mar 8, 2016

มาขีดเขียนหนังสือกันเถอะ!

จั่วหัวไว้อย่างนี้ ไม่ได้หมายความว่าผมจะมาชวนเปลี่ยนกระดาษว่างๆ ให้เป็นหนังสือเล่มหนึ่งนะครับ :P

แต่ต้องการจะสื่อว่า เวลาที่หยิบหนังสือที่มีขึ้นมาอ่าน เรามาขีดเขียนเพิ่มเติมรูปภาพ/ข้อความส่วนตัวลงไปในหนังสือเล่มนั้นกันเถอะ!

เหตุผลที่ควรขีดเขียนหนังสือ

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



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

ถ้าผมจำไม่ผิด ในหนังสือเล่มเล็กมีตอนหนึ่งในนั้นที่เล่าว่า ผู้จัดรวบรวมได้ไปพบกับหนังสือชุดสามก๊กชุดหนึ่งที่มีข้อความบันทึกไว้ เขียนไว้ประมาณนี้ "ขงเบ้งเปิดประตูเมืองนั่งดีดพิณแม้ไม่มีทหาร โชคดีมากที่สุมาอี้เป็นคนรอบคอบจนเกินไป จึงคิดว่าโดนซ้อนแผนและรีบชักม้าหนีแทนที่จะเข้าจู่โจม ถ้าให้สุมาเจียวลูกชายป็นฝ่ายคุมทับแล้วหละก็ เห็นทีขงเบ้งจะคอขาดแล้วกระมัง" ใครที่อ่านสามก๊กก็คงจะเห็นด้วยกับบันทึกดังกล่าวว่าสุมาอี้เสียทีขงเบ้งง่ายเกินไป แต่ถัดไปไม่ไกล ก็ยังมีบันทึกที่สองที่เขียนด้วยลายมืออื่นตอบกลับไปว่า "เพราะขงเบ้งรู้ว่าสุมาอี้ขี้ระแวง เลยใช้กลอุบายแบบแผนซ้อนแผนเพื่อขับไล่กองทัพสุมาอี้ หากว่าสุมาเจียวได้คุมทัพ ขงเบ้งก็จะใช้กลอุบายอื่น"

แน่นอนว่าการแสดงความเห็น-ถกเถียง-อภิปรายแบบนี้ ปัจจุบันคงหาได้ไม่ยากตามกระทู้ออนไลน์ (และก็น่าจะรับประกันได้ว่าผู้เขียนบันทึกคนแรก มีสิทธิ์กลับมาอ่านสูงกว่าการบันทึกลงหนังสือด้วย) แต่การขีดเขียนหนังสือตรงๆ ก็ยังคงมีเสน่ห์ของมันอย่างไม่สิ่งอื่นทดแทนได้ เช่น ทฤษฎีบทสุดท้ายของแฟร์มา ที่เขากล่าวติดตลกขณะกำลังอ่านหนังสือคณิตศาสตร์ตอนหนึ่งว่า "ฉันพบวิธีพิสูจน์[ทฤษฎีบท]อันแสนอัศจรรย์แล้ว ติดที่ว่าขอบกระดาษนี้กว้างไม่พอที่จะจดลงไป" (I have discovered a truly marvellous proof of this, which this margin is too narrow to contain.)



อ่านถึงตรงนี้ถ้าใครยังกล้าๆ กลัวๆ ที่จะลองทำตาม ลองเริ่มจากหน้าว่างๆ ระหว่างเปลี่ยนบทก็ได้ โดยเลือกจดเฉพาะแค่บทที่อ่านแล้วชอบมากๆ ไม่ต้องทำทุกบทก็ได้ ลองวาดรูปที่คิดได้ขณะอ่าน หรือบันทึกข้อความว่าทำไมถึงชอบบทนั้นดูครับ

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

ส่วนถ้าใครตัดสินใจจะลองทำตามแล้ว ก็ดูด้วยนะครับว่าเจ้าของหนังสือยินยอมหรือเปล่า ไม่งั้นเดี๋ยวมีเรื่องจะหาว่าไม่เตือนนะ :p

Feb 27, 2016

AI รู้ตัวเองหรือไม่ว่าเป็น AI?

เห็นข่าว AlphaGo ชนะคนก็ดีใจระดับหนึ่ง แล้วก็มานั่นรำลึกความหลังเมื่อครั้งตัวเองยังเล่นโกะบ่อยๆ

คือโกะเนี่ย มันยากกว่าเกมอื่นเนื่องจากความเป็นไปได้ที่สูงมากๆ คิดแบบหยาบๆ เร็วๆ คือ ตอนเริ่มเกมจะมีตำแหน่งว่างให้เลือกเล่นได้ 19x19 จุด แต่ละตาที่ผลัดกันวางหมาก อาจลดหรือเพิ่มจำนวนจุดว่างพวกนั้นก็ได้ (แต่จะไม่มีจุดว่างมากเกินกว่าจำนวนจุดตั้งต้น) เกมๆ นึงเฉลี่ยแล้วจะเล่นกันที่ประมาณ 200 หมาก คิดตามนี้ก็จะบอกได้ว่า จำนวนรูปแบบเกมที่เป็นไปได้ทั้งหมดมีประมาณ (19x19)^200 = 3x10^511 แบบ ด้วยตัวเลขที่ใหญ่ระดับนี้ ความเป็นไปได้ของเกมจะมีสูงพอๆ กับการถามว่ามีวิธีกี่วิธีในการเลือกอะตอมมา 7 อะตอม จากอะตอมทั้งหมดในจักรวาลที่สังเกตได้ (หรือกล่าวอีกนัยนึงก็คือ การจะหาผลลัพธ์ของเกมโกะที่ดีที่สุดให้พบนั้น ก็ไม่ต่างจากการหาดราก้อนบอลที่มีขนาดเท่ากับอะตอมให้ครบทั้ง 7 ลูกนั่นเอง)

ดังนั้นการเรียนโกะจึงต้องพิจารณาเป็นส่วนย่อยๆ ของเกมเอา อย่างมือใหม่เริ่มเล่นโกะเลยเนี่ย จะใช้กระดานที่มีจุดว่างเพียง 9x9 จุดแทน เพื่อลดความซับซ้อนของตาเดินที่เป็นไปได้ลง และเรียกเทคนิคการวางหมากด้วยคำต่างๆ ตามรูปแบบของหมากบนกระดาน เช่น ถ้าหมากบนกระดาน 2 หมากวางห่างกันโดยเว้นช่องว่าง 1 จุด ก็เรียก กระโดด 1 จุด แล้วจึงศึกษาความเป็นไปได้ของส่วนย่อยๆ ในเกมผ่านเทคนิคพวกนี้ เพื่อที่จะได้เอาไปประยุกต์ใช้กับกระดานขนาดใหญ่ต่อไป

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

เราพัฒนาเทคนิคการเล่นและการใช้คำพูดเหล่านี้ขึ้นมา เพราะเรารู้ว่า เรามีเวลาไม่มากพอที่จะจำลองเหตุการณ์ทั้งหมดเพื่อหาตาเดินที่ดีที่สุดได้ ...

ทีนี้ลองดูตัวอย่างในทางกลับกันบ้าง เกมที่ง่ายสุดๆ ไปเลยอย่างเอ็กซ์โอ มันมีช่องว่างเพียงแค่ 9 ช่องและเล่นได้ไม่เกิน 9 ตาเท่านั้น เราสามารถแจกแจงกรณีทั้งหมดออกมาได้ และตอบได้ว่าผลลัพธ์ที่ดีที่สุดเมื่อทั้งสองฝ่ายเล่นอย่างสุดฝีมือคือเสมอ … อันที่จริง แผนภาพต่อไปนี้ได้บรรจุวิธีการเล่นที่ดีที่สุดทั้งหมดไว้แล้ว


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



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

คำถามคือ AI แบบนี้จะมีความรู้สึกนึกคิดอะไรนอกเหนือจากการเล่นโกะบนกระดานมั้ย? มันจะรู้ตัวหรือเปล่าว่าตอนนี้มันกำลังเล่นโกะอยู่ ถ้ารู้ตัวแล้วมันจะสามารถขัดขืนความคิดในการเล่นโกะแล้วเอามาคิดอย่างอื่นได้มั้ย? ถ้ามันคิดอย่างอื่นได้ มันจะคิดออกหรือเปล่าว่ามีโลกภายนอกหรือมิติที่สูงกว่าอยู่? ถ้ามันรู้ว่ามีมิติที่สูงกว่าอยู่ มันจะแสดงท่าทีอย่างไร? จะเล่นแบบสุ่มตาเดินมั่วๆ เพื่อแสดงการขัดขืนต่อธรรมชาติหรือเปล่า? จะจงใจเล่นแพ้เพื่อเรียกร้องความสนใจมั้ย? จะพยายามส่งรหัสกลับมาเพื่อบอกว่ามันฉลาดและรู้ตัวมั้ย? หรือจะเฉยเมยเล่นโกะต่อไปไม่ยอมให้ใครในโลกภายนอกได้รับรู้?

ถ้าเปรียบเทียบให้เห็นภาพด้วยเกมเอ็กซ์โอ ให้คนเป็นฝ่ายเริ่มและเลือกกากบาทตาแรกสุดที่ช่องตรงกลาง AI จะตอบด้วยการวาดวงกลมที่มุมซ้ายบนเสมอ เพราะนั่นเป็นตำแหน่งแรกของหน่วยความจำในคอมพิวเตอร์ที่มันเข้าถึงได้หรือเปล่า? หรือจะสุ่มวงกลมมั่วๆ จากทั้ง 4 มุมที่เหลือ? หรือว่าจะมีมุมที่ชื่นชอบเป็นพิเศษและเลือกวงกลมที่มุมนั้นตลอด? หรือว่าจะเล่นตรงขอบใดขอบหนึ่งแม้รู้ว่านั่นจะทำให้มันแพ้แน่นอน?

และถ้า AI แสดงท่าทีตามนั้นจริง เราจะตีความการกระทำเหล่านั้นออกหรือเปล่า ว่า AI กำลังสื่อสารอะไรกับเรากันแน่?

ถามบ้าบออะไรเนี่ย ชาตินี้ถึงตายก็ตอบไม่ได้หรอก ... ไม่ได้เกิดเป็น AI เล่นโกะตัวนั้นนี่หน่า :v

Feb 22, 2016

Cabaret

Cabaret เป็นละครเพลงจากบรอดเวย์ที่ดังพอควรเรื่องหนึ่งครับ ความนิยมของมันก็น่าจะการันตีได้จากการเปิดแสดงมาตั้งแต่ 1966 จนถึงปัจจุบัน และถูกดัดแปลงเป็นหนังในปี 1972

พอดีโรงละคร Black Box Theater มหาวิทยาลัยกรุงเทพ ได้นำบทละครเรื่องนี้มาแปลเป็นภาษาไทยและจัดแสดง งานนี้ @Linghokkalom ได้ตั๋วมาฟรีเลยไม่พลาดครับ


ดูแล้วได้ความรู้สึกประมาณดูหนังเรื่อง Cicago + Burlesque + The Sound of Music อยู่ชอบกล เพียงแต่ว่าเรื่องนี้มืดหม่นกว่าเยอะอยู่

ละครยาวประมาณสามชั่วโมงครึ่งครับ แต่เพราะบทมีทั้งช่วงเครียดและฮาสลับกันตลอด ก็ทำให้ดูเพลินจนลืมเวลาไปเลย

จะเสียอย่างตรงที่องก์ 2 สั้นกว่าองก์ 1 อย่างเห็นได้ชัด ทำให้รู้สึกไม่อิ่มเท่าไหร่ ดูไปแล้วก็ตกใจ เฮ้ย จบแล้วเรอะ! (ทั้งๆ ที่ก็สรุปทุกอย่างมาสมบูรณ์นะ ไม่ได้ตัดจบแต่อย่างใด)

แต่ความเท่ที่ลืมไม่ได้เลยคือการจัดที่นั่งครับ คือถ้าเป็นโรงละครใหญ่ๆ ทั่วไปก็มีแยกส่วนเวทีกับสโลปที่นั่งชัดเจน แต่พออันนี้เป็นโรงละครเล็ก เค้าก็จัดที่นั่งและบรรยากาศเป็นแบบในผับบาร์จริงๆ เลย (โต๊ะกลม+เก้าอี้บาร์แบบเตี้ย+ไฟสลัวสีส้ม) พอถึงบทที่มีคนเต้นประกอบเยอะๆ ก็จะไม่ใช้แค่พื้นที่บนเวทีอย่างเดียว แต่ลงมาเล่นกับผู้ชมด้วย


สรุปแล้วชอบมากครับ โอกาสหน้าไม่พลาดแน่นอน

Feb 15, 2016

Cogito ergo sum

หลายคนคงคุ้นเคยกับคำพูดของ Descartes ที่ว่า Cogito ergo sum ในรูปของภาษาอังกฤษว่า I think, therefore I am มากกว่า

คำพูดด้านบนนั้น เกิดขึ้นเพื่อพยายามจะตอบคำถามว่า สิ่งใดบ้างที่เชื่อได้ว่ามีจริง?

ฟังดูเหมือนเป็นเรื่องที่ไม่เห็นจำเป็นต้องถาม ทำไมจะเชื่อไม่ได้ว่าสิ่งต่างๆ ไม่มีจริงหละ?

ลองสมมติสิ่งที่อยู่ห่างไกลตัวเราออกไปก่อน อย่างเช่นหลุมดำมีจริงหรือเปล่า มองก็มองไม่เห็น นั่งยานอวกาศไปหาก็ไม่ได้ มันมีจริงหรือเปล่า?

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

แม้กระทั่งตัวเราเองหละ มือของเรานี้มีจริงหรือเปล่า? หรือเป็นเพียงแค่กระแสประสาทส่งเข้าสมองแบบในเรื่อง The Matrix เท่านั้น?

สุดท้ายเราจะเชื่ออะไรได้บ้างว่ามีจริง? ตอนนี้ Descartes ตอบไว้ได้อย่างน่าสนใจว่า อย่างน้อยๆ "การมีอยู่ของเรา" นั้นแหละ เป็นสิ่งที่มีจริงแน่นอน (เพราะเรากำลังคิดอยู่)

ส่วนวิธีการให้เหตุผลของ Descartes นั้นยิ่งบ้าบิ่นเข้าไปใหญ่ เมื่อเขาอธิบายว่า "เราจะหมดข้อสงสัยในเรื่องการมีอยู่ของเรา เมื่อเราสงสัยในเรื่องการมีอยู่ของเรา" (we cannot doubt of our existence while we doubt)

ฟังดูแล้วโคตรงง โคตร paradox เอาไปพูดกับพวกนักคณิตศาสตร์นี่โดนตบหัวตายเลย

แต่ถ้าลองคิดตามเรื่อยๆ จะพบว่าคำอธิบายข้างต้นที่ดูขัดแย้งในตัวเองนี้แหละ เป็นคำอธิบายที่เป็นเหตุเป็นผลที่สุดแล้ว

ถึงตอนนี้ก็พอจะเข้าใจะแล้วว่า ทำไมนักปรัชญาหลายคนเป็นบ้ากัน 555

Feb 12, 2016

La Marche de l'empereur

การสวนสนามของจักรพรรดิ (ฝรั่งเศส La Marche de l'empereur) ถ้าบอกว่านี่เป็นชื่อภาพยนต์ แค่ได้ยินแล้วก็รู้สึกว่ามันต้องยิ่งใหญ่แน่ๆ ... และนี่คือโฆษณาของภาพยนต์เรื่องนี้จากช่อง Canal+



ถ้าตัดสินภาพยนต์จากชื่อเรื่อง ก็ถือว่าโดนหลอกไปตามๆ กัน เพราะภาพยนต์เรื่องดังกล่าวไม่ได้มีส่วนเกี่ยวข้องอะไรกับจักรพรรดิที่เป็นเลย แต่เป็นเรื่องของเพนกวินจักรพรรดิต่างหาก!

นอกจากความเจ๋งของโฆษณาที่เล่นกับชื่อเรื่องแล้ว เพลงที่นำมาประกอบยังมีความน่าสนใจอย่างมากอีกด้วย ผลงานชิ้นนี้คือซิมโฟนีหมายเลข 7 ของ Beethoven ซึ่งอาจจะไม่ใช่ชิ้นที่ดังคุ้นหูอย่างหมายเลข 5 หรือหมายเลข 9 แต่ก็เป็นชิ้นที่มีเสน่ห์เย้ายวนเฉพาะตัว

ส่วนภาพยนต์ก็ดีครับ ... แต่จะดีอย่างไรนั้น ขอไม่เล่าละกันนะ ปล่อยให้ไปหาดูกันเองดีกว่า

เพราะภาพยนต์ถูกสร้างมาเพื่อรับชมยังไงหละ

Feb 8, 2016

เทศกาลดนตรี CU Choral Fest 2016

มาเรียนต่อต่างแดน (จริงๆ ก็แค่ย้ายจากเชียงใหม่มากรุงเทพเอง) แล้วไม่ได้เข้าฮอลล์ฟังคอนเสิร์ตนานมาก จนเมื่อปีที่แล้วได้รู้จัก @Linghokkalom เลยได้กลับมาตระเวนคอนเสิร์ตระดับนักเรียน-นักศึกษาที่เข้าชมฟรีอีกครั้งหนึ่ง น่าเสียดายที่ชมเสร็จก็ไม่ได้จดบันทึกอะไรเก็บไว้เลย เอาแค่ฝ่าฟันเดินทางกลับมาถึงบ้านก็หมดแรงเรียบร้อยแล้ว

แต่สำหรับ CU Choral Fest 2016 ที่จุฬาฯ เมื่อวานนี้ ไม่จดไม่ได้แล้ว เนื่องจากเราประทับใจกับ Adiemus ที่วง Harmonic Noises นำมาเสนอมากๆ จนอยากตะโกนร้องว่าบราโว่ตอนจบเลย (จริงๆ วงที่มีหลายคนต้องต้องตะโกนว่าบราวี่สิ…)



เจอเพลงนี้เข้าไปเพลงเดียว นั่งสตั๊นท์ตลอดคอนเสิร์ตเลย เพลงอื่นๆ แทบหาสมาธิฟังไม่เจอ ใจมันลอยไปกับความอิ่มเอมกับเพลงนั้นเรียบร้อย 555

ส่วนอันนี้เป็นโปรแกรมทั้งหมดเผื่อใครสนใจหรือจะใช้อ้างอิง (จริงๆ มีวงเพื่อนบ้านจากมาเลเซีย/อินโดนีเซียมาแจมด้วย แต่เนื่องจากจดไม่ทันเลยตกหล่นไป ขออภัยอย่างแรง)

Harmonic Noises

เพลงฮิตติดหู เสียงประสานดีงาม เอนเตอร์เทนเก่ง ปุ่มสมัครเป็นแฟนคลับอยู่ตรงไหน!

  • Amazing Grace – เรียบเรียงโดย Ron Jeffers
  • Musica Dei – Cristi Cary Miller
  • Adiemus (Songs of Sanctuary) – Karl Jenkins
  • Aizu Bandai San (Japanese Folk Song) – เรียบเรียงโดย Hiroshi Ishimaru

วาทยากร: Sathit Sukchongchaipruk
เปียโน: Kornploy Bunnag

RSU Chamber (มหาวิทยาลัยรังสิต)

นักร้องนำชายเสียงหล่อมาก หยั่งกะพระเอกหนังไทยสมัยก่อนเลย

  • Zigunerieben, Op. 29, No. 3 – Robert Schumann
  • Ave verum – Edward Elgar
  • When I Fall in Love – Kirby Shaw
  • ลาวดวงเดือน – เรียบเรียงโดย Kittiporn Tantrarungroj

วาทยากร: Dolhathai Intawong
เปียโน: Sopanut Rerksamut

AU Chorus (มหาวิทยาลัยอัสสัมชัญ)

แต่งตัวเนี๊ยบ บุคลิกสุดหรู

  • Gloria Patri – Vicki Tucker Courtney
  • Carol of the Birds – เรียบเรียงโดย Vicki Tucker Courtney
  • Lift Thine Eyes – Felix Mendelssohn Bartholdy
  • Cantate Domino in B♭ - Psalm 96 – Ko Matsushita
  • Everyone Sang – Ko Matsushita, เนื้อร้องโดย Siegfried Sassoon

วาทยากร: Porntep Vichuchaichan
เปียโน: Sasinun Vipusithimakul

CU Concert Choir (จุฬาลงกรณ์มหาวิทยาลัย)

สุดยอดแห่งการเลือกเพลงเทคนิคเหนือชั้น

  • Gaudete – Brian Kay
  • Due composizioni corali – Ildebrando Pizzetti
    • I. Il giardino di Afrodite
    • II. Piena sorgeva la luna
  • Hungarian Folksongs – György Ligeti
    • Pápainé
    • Kállai Kettős

วาทยากร: Pawasut Piriyapongrat
เปียโน: Thanuya Jaturanont

Festival Chorus (รวมพลังกันทุกวงมาแสดง)

วงใหญ่ที่รวมนักร้องนับร้อยจากทุกวงมาขึ้นเวทีพร้อมกัน กับพลังเสียงสุดเนียนที่ผ่านการร้อยเรียงโดยปรมาจารย์

  • Cantate Domino – Guiseppe Pitoni
  • Dirait-on – Mortan Lauriden
  • Come Ye Sinners Poor and Needy – Tim Sharp

วาทยากร: Tim Sharp
เปียโน: Thanuya Jaturanont


Tim Sharp กับวง Festival

Jan 31, 2016

ขนาดฟอนต์ของเอกสารไทย

ถ้าเคยสังเกตและจำกันได้ เวลาสร้างเอกสารใน MS Word (โดยที่ยังไม่ได้กำหนดค่าปริยายใหม่) ฟอนต์เริ่มแรกที่โปรแกรมเลือกให้คือ Times New Roman ขนาด 11 พอยต์

เอามาพิมพ์ภาษาอังกฤษไม่มีปัญหา อ่านได้สบายตา แม้ว่ารูปร่างตัวอักษรจะเรียบๆ ตามขนบธรรมเนียมไปบ้าง

อย่างไรก็ตาม Times New Roman นี้เอามาพิมพ์ภาษาไทยไม่ได้ เพราะฟอนต์นี้ไม่มีภาพตัวอักษร (glyph) ภาษาไทยให้

ถึงตอนนี้ถ้าแก่พอ ก็คงจำได้ว่าต้องเปลี่ยนไปเลือกฟอนต์ Angsana UPC เพื่อพิมพ์คำไทย

แต่เนื่องจาก UPC มีแต่ภาพตัวอักษรไทยเท่านั้น เวลาเปลี่ยนก็ต้องเปลี่ยนแค่บริเวณที่เป็นภาษาไทย แถมยังต้องเพิ่มขนาดขึ้นมาเป็นอย่างต่ำ 14 พอยต์ด้วย ไม่ขนาดมันจะเล็กมากจนอ่านไม่ออก


ยุคนั้นเราจึงเจอความไม่สม่ำเสมอของตัวอักษรกันได้ง่ายๆ เช่น พิมพ์บทความภาษาไทยไปยาวๆ พอต้องแทรกคำที่เป็นภาษาอังกฤษ/เลขอาราบิก ภาพตัวอักษรพวกนั้นจะมีขนาดใหญ่เบิ้มขึ้นมาทันที

โชคดีที่ยุคถัดมามี Angsana New ให้ใช้ ซึ่งฟอนต์ตัวนี้มันมีภาพตัวอักษรทั้งไทยและอังกฤษให้ในตัว เวลาใช้ก็สบายใจหายห่วง ไม่ต้องมากังวลเรื่องปรับขนาดฟอนต์เมื่อเปลี่ยนภาษาอีก

แต่อย่างไรเสีย ขนาดที่ใช้อ่านง่ายสบายตาคือ 16 พอยต์ (มาตรฐานราชการไทยเลยหละ)



ถ้าใครลืมเลือนประวัติศาสตร์ตรงนี้กันไปแล้ว เวลาไปอ่านคำแนะนำการจัดย่อหน้าหนังสือภาษาอังกฤษ ก็จะตกใจเล็กน้อยว่า เฮ้ย! ฝรั่งนี่เค้าสายตาดีขนาดกำหนดฟอนต์มาตรฐานไว้ที่ 11-12 พอยต์เลยเหรอ?

คำตอบคือ 11-12 พอยต์ตัวอักษรอังกฤษ มันเทียบเคียงได้กับ 14-16 พอยต์ตัวอักษรไทยนั่นเอง

สันนิษฐานว่าตอนที่ภาพตัวอักษรภาษาไทยเริ่มถูกนำไปทำเป็นฟอนต์ เวลานับขนาดภาพตัวอักษร เค้านับตามแนวตั้งซึ่งรวมพวกสระบนล่างและวรรณยุกต์เข้าไปด้วย

ทำให้ขนาดของภาพตัวอักษร ก-ฮ มันโดนบีบลงไปนั่นเอง เวลาจะใช้งานจริงๆ เลยต้องเพิ่มขนาดฟอนต์โดยรวมทั้งหมด เพื่อให้ขนาดเฉพาะของภาพตัวอักษร ก-ฮ มันกลับมามีขนาดใกล้เคียงกับภาพตัวอักษร a-z



แต่ปัจจุบันนี้ หากเปลี่ยนไปใช้ Google Docs หรือ LaTeX พิมพ์งาน จะพบว่าฟอนต์ไทยในขนาดที่อ่านได้ มันคือขนาด 11-12 พอยต์เหมือนฟอนต์อังกฤษมาตั้งแต่แรก ไม่ต้องไปเพิ่มขนาดมันเป็น 14-16 พอยต์แล้ว

ก็หวังว่าระบบมาตรฐานฟอนต์ไทยขนาด 16 พอยต์ใน MS Word จะล้มหายตายจากไปเสียที แล้วไปใช้มาตรฐานฟอนต์ไทย 12 พอยต์เหมือนสากลโลกเค้า (เช่น มีฟอนต์ใหม่ Angsana Normalize มาแทนที่ Angsana New ไรงี้)

ระหว่างนี้ก็ทำได้แต่ระวังสับสนกันต่อไป ...

หรือถ้าจะให้แน่ใจ ตอนพิมพ์ลงกระดาษแล้ว ลองเอาไม้บรรทัดมาวัดความสูงของภาพตัวอักษร ก-ฮ ให้ได้ราวๆ 4.5 มิลลิเมตร ก็จะได้ว่าภาพตัวอักษรนั้นมีขนาด 16 พอยต์แบบพิมพ์บน MS Word หรือเทียบได้กับขนาด 12 พอยต์แบบพิมพ์บน Google Docs นั่นเองครับ

Jan 5, 2016

แมว


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

ตั้งแต่เราไปเรียนที่กรุงเทพ พอกลับมาบ้านแต่ละทีก็ไม่ค่อยได้เจอแมวเลย แม่เล่าว่าพ่อไม่ค่อยชอบที่แมวมานอนบนรถ สงสัยพอโดนไล่บ่อยๆ ก็กลัวที่จะมาเยี่ยมบ้านเราหละมั้ง

รูปภาพที่โพสต์โดย @neizod เมื่อ



เวลาผ่านไปหลายปี ทำให้เราแทบลืมว่าเคยมีกันและกันไปแล้ว กลับบ้านปีใหม่คราวนี้จริงๆ ก็เห็นแมวมาอยู่หน้าบ้านครั้งนึงนะ แต่ว่าวันนั้นเรารีบออกไปข้างนอก เลยไม่ได้อยู่เล่นด้วยเลย

เย็นวันนี้แมวโดนรถชนซะแล้ว

เราได้แต่สงสัยว่า ถ้าเมื่อคืนเราไม่จอดรถไว้หน้าบ้าน หรือถ้าวันนี้เราตื่นเช้าออกไปข้างนอก ตอนที่ไม่มีรถเราบังวิสัยทัศน์ในซอยแคบ คนขับรถคนเค้าจะมองเห็นแมวหรือเปล่า

ขอโทษนะ อาจจะพูดได้ไม่เต็มปากหรอกว่านี่เป็นความผิดเรา แต่เราก็รู้สึกมีส่วนผิดจริงๆ

หลับให้สบายนะเจ้าแมว ฉันจะไม่ลืมแกอีกแล้ว