วันพฤหัสบดีที่ 6 กรกฎาคม พ.ศ. 2560

รู้ทันนักวิจัย (๖) บน simulation ทุกอย่างเป็นไปได้หมด (ภาค ๒) MO Memoir : Thursday 6 July 2560

บทความชุดนี้ไม่ได้เขียนให้นักวิจัยอ่านนะครับ แต่เขียนให้คนที่ต้องทำงานเกี่ยวข้องกับนักวิจัยอ่าน

ผมมักจะบอกกับนิสิตที่ผมสอนเสมอว่า ในสังคมที่เน้นไปที่ การสอน การถ่ายทอด การฝึกอบรม เทคนิคการนำเสนอต่าง ๆ ที่มีการโฆษณากันอย่างแพร่หลายว่า สามารถทำให้คนฟังคล้อยตามผู้บรรยายโดยไม่ได้คิดตาม สิ่งสำคัญที่พวกเขา (โดยเฉพาะเมื่ออยู่ในฐานะผู้ฟัง) คือ "ฟังอย่างไรไม่ให้ถูกหลอก"

๑. ทำนายค่าได้ดี ดูจากอะไร

เวลาที่ผมสอบนิสิตที่นำเสนองานวิจัยเกี่ยวกับการสร้างแบบจำลองทางคณิตศาสตร์ของกระบวนการใดกระบวนการหนึ่งนั้น คำถามที่ผมถามนิสิตผู้ทำวิจัยอยู่เป็นประจำก็คือ ต้องการจะเอาแบบจำลองนั้นไปใช้ประโยชน์อะไร เพื่อการออกแบบ หรือเพื่อการควบคุมกระบวนการ เพราะมันจะใช้แง่มุมที่พิจารณาต่างกัน โดยแบบจำลองที่เน้นไปที่การออกแบบนั้นจะเน้นไปที่ "ความถูกต้อง" ของผลการคำนวณที่ได้เป็นสำคัญ ในขณะที่ "เวลา" ที่ต้องใช้ในการคำนวณนั้นเป็นปัจจัยรอง แต่ถ้าเป็นแบบจำลองที่จะนำไปใช้ในการควบคุมกระบวนการจริงแบบ real time "เวลา" ที่ต้องใช้ในการคำนวณจะเป็นปัจจัยหลักที่ใช้ในการพิจารณา ส่วนความถูกต้องนั้นเป็นปัจจัยรอง 
  
เหตุผลก็คือการควบคุมกระบวนการนั้นเป็นงานที่ทำแข่งกับเวลาแบบ real time การที่แบบจำลองสามารถทำนายว่าจะมีการเปลี่ยนแปลงในทิศทางไหน ด้วยขนาด "ประมาณ" เท่าใด ก่อนที่จะเกิดขึ้นจริง และยังมีเวลาเหลือให้ระบบควบคุมทำงานเพื่อการรับมือ มันสำคัญกว่าการที่แบบจำลองสามารถทำนายพฤติกรรมและขนาดของการเปลี่ยนแปลงได้ถูกต้อง แต่มันมาหลังจากที่เหตุการณ์ดังกล่าวผ่านพ้นไปแล้วหรือไม่เหลือเวลาให้ระบบควบคุมตอบสนองใด ๆ
 
ผมเคยตั้งคำถามให้กับนิสิตระดับบัณฑิตศึกษาของภาค (ที่ทำงานอยู่ในภาคอุตสาหกรรมและมาเรียนต่อในช่วงวันหยุด) ลองพิจารณาว่า ถ้าคุณมีแบบจำลองอยู่ ๒ แบบ แบบจำลองที่หนึ่งนั้นสามารถทำนายผลได้อยู่ในช่วง ±5 % กับแบบจำลองที่สองที่ทำนายผลผิดไป -50 % ตลอด คุณจะเอาแบบจำลองไหนสอบวิทยานิพนธ์ และแบบจำลองไหนไปใช้งานจริง คำตอบที่ได้ก็คือเขาจะเอาแบบจำลองแบบแรกไปใช้ในการสอบวิทยานิพนธ์ ด้วยเหตุผลที่ว่ามันดูดีในแง่วิชาการและความชอบของอาจารย์ เพราะมันประมาณค่าได้ใกล้เคียงกับความเป็นจริง แต่ถ้าจะเอาไปใช้งานจริงจะเลือกใช้แบบจำลองที่สอง เพราะถ้ามันคำนวนค่าออกมาได้เท่าใด ก็คูณสองเข้าไปเลยเพื่อให้ได้ค่าที่เป็นจริง ในขณะที่ถ้าเป็นแบบจำลองแบบแรกนั้นมันมีปัญหาตรงที่เมื่อได้ค่าจากการคำนวณแล้ว มันบอกไม่ได้ว่าควรทำอย่างไรก็ค่านั้นต่อ หักออก 5 % บวกเพิ่ม 5 % หรือไม่ต้องทำอะไรเลย เพื่อให้ได้ค่าที่ถูกต้อง
 
การที่จะรู้ว่าแบบจำลองทางคณิตศาสตร์ที่ตั้งขึ้นมานั้นมีความถูกต้องมากน้อยเพียงใด ต้องใช้การเปรียบเทียบกับผลการทดลองจริง ลองดูตัวอย่างในรูปที่ ๑ ในหน้าถัดไปดูนะครับ เป็นกราฟความเข้มข้นสาร B ในปฏิกิริยา A -> B -> C สามเหลี่ยมคือจุดข้อมูลการทดลอง ส่วนเส้นทึบคือค่าที่ได้จากแบบจำลองทางคณิตศาสตร์ ปฏิกิริยารูปแบบนี้ ในช่วงแรกความเข้มข้นสาร B จะเพิ่มขึ้นเรื่อย ๆ เนื่องจากยังมีสาร A ในปริมาณมาก แต่เมื่อไปถึงจุดหนึ่งความเข้มข้นสาร B จะลดลงเนื่องจากการสลายตัวของ B ไปเป็น C นั้นมากกว่าการเกิดสาร B จากสาร A (เพราะสาร A มันหมดไป) บทความดังกล่าวบอกว่าแบบจำลองทางคณิตศาสตร์ของเขานั้นสามารถทำนายผลการทดลอง "ได้ดี" 

รูปที่ ๑ กราฟเปรียบเทียบการทำนายความเข้มข้นของสาร B (ปฏิกิริยา A -> B -> C) ระหว่างข้อมูลการทดลอง (จุดสามเหลี่ยม) กับแบบจำลองทางคณิตศาสตร์ (เส้นทึบ)

ทำนายค่า "ได้ดี" ใช้อะไรเป็นเกณฑ์พิจารณา สำหรับงานทางด้านการเกิดปฏิกิริยาเคมีนั้นการที่จะสร้างแบบจำลองทางคณิตศาสตร์ที่สามารถทำนายค่าได้ตรงกับผลการทดลองแบบแทบไม่ผิดเพี้ยนไม่ว่าจะเป็นสภาวะใดนั้น ผมว่าเป็นเรื่องที่อย่าไปคาดหวังว่าจะได้ เว้นแต่ว่าจะเป็นระบบการเกิดปฏิกิริยาง่าย ๆ ที่กลไกการเกิดปฏิกิริยาไม่ซับซ้อนอะไร ในตัวผมเองนั้นเวลาพิจารณาว่าแบบจำลองทางคณิตศาสตร์นั้นทำนายผลการทดลองได้ดีแค่ไหน ผมจะพิจารณาอยู่ ๓ ประเด็นด้วยกันคือ
 
(ก) ขนาด ของตัวแปรตาม (เช่นความเข้มข้นของสาร การเปลี่ยนแปลงอุณหภูมิของระบบ)
 
(ข) ตำแหน่ง ของตัวแปรอิสระ (เช่นเวลาการทำปฏิกิริยาหรือความยาวของ tubular ractor ที่ให้ความเข้มข้นของสารที่ต้องการมากที่สุดก่อนที่มันจะสลายตัวต่อไป ตำแหน่งใน fixed-bed ที่เกิดจุด hot spot) และ
 
(ค) พฤติกรรมการเปลี่ยนแปลงของตัวแปรตาม (เช่นความเข้มข้นของสารในรูปที่ ๑) เมื่อตัวแปรอิสระ (เช่นเวลา) เปลี่ยนแปลงไป
 
ถ้าแบบจำลองนั้นสามารถให้ความถูกต้องในทั้ง ๓ ประเด็นข้างต้นได้ ก็ถือได้ว่าเป็นแบบจำลองที่ดีมาก แต่สำหรับหลาย ๆ งานแล้ว (โดยเฉพาะแบบจำลองที่เน้นไปที่การควบคุมกระบวนการ) เราอาจต้องให้ความสำคัญกับบางประเด็นเป็นพิเศษ กรณีหนึ่งที่เคยเจอก็คือปฏิกิริยาคายความร้อนที่เกิดขึ้นใน non-isothermal non-adiabatic fixed-bed catalytic reactor ของโรงงานหนึ่ง เครื่องปฏิกรณ์นี้มีความยาวของเบดเกือบ 3 เมตร ปฏิกิริยาคายความร้อนนั้นเป็นปฏิกิริยาที่เร่งตนเองในช่วงแรก เพราะความร้อนที่คายออกมาจะทำให้อัตราการเกิดปฏิกิริยาสูงขึ้น (แม้ว่าความเข้มข้นสารตั้งต้นจะลดลงก็ตาม) พอปฏิกิริยาเริ่มเกิด อุณหภูมิในเบดจะเพิ่มขึ้นอย่างรวดเร็วจนเกิดจุด hot spot ขึ้นในเบด (เรียกว่ากระโดดขึ้นกว่า 100ºC ได้ในระยะทางเพียงแค่ประมาณ 30 cm เท่านั้น ก่อนที่จะลดต่ำลงอันเป็นผลจากสารตั้งต้นหมดไป สิ่งที่เขาต้องการทราบจากแบบจำลองก็คือควรทำการติดตั้งเทอร์โมคับเปิล ณ ตำแหน่งใดใน fixed-bed เพื่อที่จะได้สามารถควบคุมอุณหภูมิไม่ให้เพิ่มมากเกินไป ดังนั้นเขาต้องการแบบจำลองที่สามารถทำนาย "ตำแหน่ง" ที่จะเกิด hot spot ได้ถูกต้องในทุกสภาวะการผลิต ส่วนความถูกต้องของอุณหภูมิสูงสุดที่เกิดที่แบบจำลองทำนายได้นั้นไม่ใช่เรื่องสำคัญ
 
เมื่อผมลองเอาประเด็นประกอบการพิจารณา ๓ ประเด็นที่ใช้อยู่เป็นประจำข้างต้นไปพิจารณารูปที่ ๑ สิ่งที่เห็นก็คือแบบจำลองดังกล่าวนั้นสามารถทำนายขนาดของตัวแปรตาม (คือความเข้มข้นของสาร B) ที่มีค่ามากที่สุดได้ดี ตำแหน่งของตัวแปรอิสระที่ใช้ค่าตัวแปรตามมากที่สุด (คือเวลาที่ต้องใช้เพื่อให้ได้สาร B มากที่สุด) ก็ทำนายได้ค่อนข้างดี แต่สิ่งที่ดูแล้วขัดตามากก็คือพฤติกรรมการเปลี่ยนแปลงความเข้มข้นสาร B หลังจากที่มันเพิ่มขึ้นสูงสุดแล้ว จริงอยู่แม้ว่าแบบจำลองจะทำนายว่ามันจะลดลงไปเรื่อย ๆ เมื่อเวลาผ่านไป และเส้นโค้งของการลดลงนั้นมีพฤติกรรมที่แตกต่างกัน นั่นแสดงว่าแบบจำลองปฏิกิริยาการสลายตัวของสาร B ไปเป็น C น่าจะมีปัญหา
 
ลองสังเกตดูจุดข้อมูลที่ได้จากการทดลองนะครับ ถ้าคุณลองลากเส้นกราฟเชื่อมจุดก็จะเห็นว่า หลังจากที่สาร B เพิ่มขึ้นสูงสุดแล้ว (ตรงนี้กราฟควรมีความชันเป็นศูนย์) อัตราการลดลงชองความเข้มข้นสาร B จะค่อย ๆ "เพิ่มขึ้น" ในช่วงแรก จนถึงจุดจุดหนึ่งที่ความเข้มข้นจะลดลงด้วยอัตราเร็วที่สูงสุด (จุดเปลี่ยนเว้าของโค้ง) ก่อนที่อัตราการลดลงจึงค่อยลดต่ำลง พฤติกรรมการเปลี่ยนแปลงแบบนี้เป็นพฤติกรรมปรกติที่พบเห็นกัน แต่ค่าที่คำนวณได้จากแบบจำลองทางคณิตศาสตร์นั้นกลับบอกว่า หลังจากที่สาร B เพิ่มขึ้นสูงสุดแล้ว ความเข้มข้นสาร B จะลดลงอย่ารวดเร็วกระทันหัน (กราฟมีการหักมุม ความชันของเส้นกราฟไม่ต่อเนื่องกัน) ด้วยอัตราการลดลงที่สูงตั้งแต่เริ่มแรก จากนั้นอัตราการลดลงจึงค่อย ๆ ลดต่ำลง รูปกราฟที่ได้มีความโค้งเว้าในทิศทางเดียว ไม่มีการเปลี่ยนทิศทางการโค้งเว้า (มันเป็นพฤติกรรมการเปลี่ยนแปลงความเข้มข้นของสาร A ที่เปลี่ยนไปเป็น B ไม่ใช่ของสาร B ที่เกิดจาก A ก่อนสลายไปเป็น C ต่อ)

อีกเรื่องหนึ่งที่ต้องคำนึงในการพิจารณารูปกราฟก็คือ จำนวนจุดข้อมูลที่ใช้วางกราฟและเทคนิคที่ใช้ในการสร้าง interpolation curve เพราะบางทีจุดข้อมูลมันใช้ได้ แต่ด้วยการเลือกเทคนิคการสร้าง interpolation curve ทำให้ได้เส้นกราฟออกมาผิดเพี้ยนไปได้ ดูตัวอย่างเรื่องนี้ได้ใน Memoir ปีที่ ๙ ฉบับที่ ๑๒๕๒ วันอังคารที่ ๑๑ ตุลาคม ๒๕๕๙ เรื่อง "การลาก smooth line เชื่อมจุด (การทำวิทยานิพนธ์ภาคปฏิบัติ ตอนที่ ๘๔)"

๒. ทำไมต้อง ode45

เดี๋ยวนี้มักจะได้ยินคำถามจากนิสิตปริญญาตรีวิศวกรรมศาสตร์บ่อยครั้งว่า ทำไมปัจจุบันจึงยังต้องเรียนอัลกอริทึมการแก้สมการคณิตศาตร์ ทั้ง ๆ ที่มันมีซอร์ฟแวร์ (ที่ได้มาอย่างถูกกฎหมายหรือไม่ถูกต้องตามกฎหมาย) ที่ทำเพียงแค่กรอกสมการเข้าไปแล้วก็ได้คำตอบออกมาโดยไม่ต้องทำอะไรเพิ่มเติมอีก
 
คำถามแบบนี้มันก็เหมือนกับถามว่าทำไมเราต้องสอนเด็กในรู้จักการบวกลบคูณหาร ทั้ง ๆ ที่ในปัจจุบันเครื่องคิดเลขราคาถูกมีขายทั่วไปหมด (หรือจะใช้โทรศัพท์มือถือคิดเลขก็ได้)
 
แต่ถ้าใครได้ศึกษาลงไปลึก ๆ หน่อยก็จะเห็นว่า ซอร์ฟแวร์ที่ใช้แก้ปัญหานั้นมันไม่ได้มีวิธีการแก้ปัญหาให้ใช้เพียงวิธีการเดียว (ถ้าเป็นอย่างนั้นจริง การทำงานก็จะง่ายขึ้นเยอะมาก) แต่กลับมีให้เลือกใช้หลายวิธีการ (เช่นในตารางที่ ๑) นั่นแสดงว่าถ้าคุณไม่รู้ว่าสมการของคุณเป็นรูปแบบไหน และเทคนิคไหนเหมาะที่จะใช้ในการแก้สมการของคุณ การเลือกเทคนิคที่ผิดหรือไม่เหมาะสมมันก็ทำให้คุณได้คำตอบได้ แต่ก็ก่อให้เกิดคำถามเกี่ยวกับความน่าเชื่อถือของคำตอบที่คำนวณได้ และก็ไม่แปลกที่หลายคนจะมีประสบการณ์ว่าต้องมานั่งกดเครื่องคิดเลข เพื่อดูว่าคำตอบที่ได้จากซอร์ฟแวร์นั้นถูกต้องหรือไม่ 
  
ในวิชาการคำนวณเชิงตัวเลขที่ผมสอนนิสิต ผมจะบอกกับนิสิตเสมอว่า ถ้าคุณมีระบบหลายสมการหลายตัวแปร (ในงานวิศวกรรมเคมี ถ้าจะมีถึงหลักหลายพันสมการหรือมากกว่านั้นก็ไม่ใช่เรื่องแปลก) ถ้าทุกสมการเป็นสมการพีชคณิต (Algebraic Equations) ทั้งหมด หรือเป็นสมการเชิงอนุพันธสามัญ (Ordinary Differential Equations ที่ย่อว่า ODE) ทั้งหมด การแก้ปัญหามันไม่ยากอะไร แต่ถ้าเป็นระบบสมการผสมระหว่างสมการพีชคณิตกับสมการอนุพันธ์ (ที่เรียกว่า Differential Algebratic Equations ที่ย่อว่า DAE) การแก้ปัญหาจะวุ่นวายมากกว่า 
  
เทคนิคการคำนวณเชิงตัวเลข (Numerical methods) ที่ใช้สำหรับแก้ปัญหาระบบสมการ ODE มีอยู่ด้วยกันหลายวิธี แต่ไม่ว่าจะใช้เทคนิคใดก็ตาม ถ้าใช้ step size การคำนวณที่เล็กมากพอ (ขนาดที่เล็กมากพอจะแตกต่างไปตามเทคนิคที่เลือกใช้) ค่าที่คำนวณได้จะลู่เข้าหาคำตอบเดียวกันที่เป็นค่าที่ถูกต้อง ตรงนี้ต่างจากกรณีของสมการอนุพันธ์ย่อย (Partial Differential Equations ที่ย่อว่า PDE) ที่มันมีเรื่อง consistency หรือความคงเส้นคงวาของคำตอบเข้ามาอีก คือใช้ต่างเทคนิคกันอาจได้คำลู่เข้าหาคำตอบที่แตกต่างกัน ทำให้เกิดคำถามได้ว่าคำตอบไหนเป็นคำตอบที่ถูกต้อง

ตารางที่ ๑ คำแนะนำในการเลือก ODE solver ของโปรแกรม MATLAB

Solver Problem Type Accuracy When to Use
ode45
Nonstiff
Medium
Most of the time. ode45 should be the first solver you try.
ode23
Low
ode23 can be more efficient than ode45 at problems with crude tolerances, or in the presence of moderate stiffness.
ode113
Low to High
ode113 can be more efficient than ode45 at problems with stringent error tolerances, or when the ODE function is expensive to evaluate.
ode15s
Stiff
Low to Medium
Try ode15s when ode45 fails or is inefficient and you suspect that the problem is stiff. Also use ode15s when solving differential algebraic equations (DAEs).
ode23s
Low
ode23s can be more efficient than ode15s at problems with crude error tolerances. It can solve some stiff problems for which ode15s is not effective.
ode23s computes the Jacobian in each step, so it is beneficial to provide the Jacobian via odeset to maximize efficiency and accuracy.
If there is a mass matrix, it must be constant.
ode23t
Low
Use ode23t if the problem is only moderately stiff and you need a solution without numerical damping.
ode23 can solve differential algebraic equations (DAEs).
ode23tb
Low
Like ode23s, the ode23tb solver might be more efficient than ode15s at problems with crude error tolerances.
ode15i
Fully implicit
Low
Use ode15i for fully implicit problems f(t,y,y') = 0 and for differential algebraic equations (DAEs) of index 1.

ก่อนหน้านี้ในยุคที่หน่วยความจำของคอมพิวเตอร์ยังมีราคาแพง และการเข้าถึงคอมพิวเตอร์สมรรถนะสูงได้ยังค่อนข้างจำกัดอยู่มากนั้น การใช้เทคนิคการคำนวณเชิงตัวเลขเพื่อหาคำตอบของระบบสมการอนุพันธ์สามัญนั้นมีประเด็นที่ต้องหาจุดสมดุลอยู่ ๓ ประเด็นด้วยกัน คือ ความเร็วในการคำนวณ (ซึ่งผูกพันอยู่กับความถูกต้องของคำตอบที่ได้) หน่วยความจำที่ต้องใช้ และเสถียรภาพของการคำนวณ (ความคลาดเคลื่อนที่เกิดจากการปัดเศษที่มีการสะสมระหว่างการคำนวณ)
 
แต่เมื่อราคาหน่วยความจำลดต่ำลง และคอมพิวเตอร์มีราคาถูกลงมากเมื่อเทียบกับสมรรถนะที่ได้ เทคนิคที่มักจะเป็นเทคนิคแรกที่เลือกใช้ (และมักจะเป็นเทคนิคสุดท้าย) ในการแก้ปัญหาระบบสมการอนุพันธ์สามัญคือ 4th Runge-Kutta หรือเทคนิคที่มีการพัฒนาเพิ่มเติมโดยใช้ 4th Runge-Kutta เป็นต้นแบบ ซึ่งแม้แต่ในการแก้สมการด้วยการใช้โปรแกรม MATLAB ก็ยังได้แนะนำให้ลองใช้เทคนิคนี้เป็นเทคนิคแรกในการหาคำตอบ ซึ่งมันก็คือ ODE Solver ที่ชื่อ "ode45"
 
ตารางที่ ๑ ข้างต้นเป็นรายชื่อ ODE Solver ที่โปรแกรม MATLAB มีให้เลือกใช้ จะเห็นนะครับว่ามีให้เลือกใช้ตั้ง ๘ ตัว ไม่ได้มีเพียงแค่ ode45 แต่ก็พอจะแบ่งเทคนิคออกได้เป็น ๓ กลุ่มโดยอาศัยเสถียรภาพของการคำนวณเป็นเกณฑ์คือ 
  
(ก) พวกปัญหาแบบทั่วไปที่ไม่ค่อยมีปัญหาใด ๆ เกี่ยวกับเสถียรภาพการคำนวณ (ที่เขาเขียนว่า Nonstiff เทคนิคการแก้ปัญหาจะเป็นวิธีการพวก explicit method และ single step method) 
  
(ข) พวกที่ค่อนข้างจะมีปัญหาเกี่ยวกับเรื่องเสถียรภาพของการคำนวณ (ที่เขาเขียนว่า Stiff เทคนิคการแก้ปัญหาจะเป็นวิธีการพวก explicit method และ multi step method)) และ
 
(ค) พวกที่มีปัญหาเกี่ยวกับเสถียรภาพของการคำนวณมากเช่นพวกระบบสมการ DAE (ที่เขาเขียนว่า Fully implicit เทคนิคการแก้ปัญหาจะใช้วิธีการพวก implicit method และ single step method ซึ่งจะใช้หน่วยความจำมาก แต่สามารถแก้ปัญหาที่เทคนิคในข้อ (ก) และ (ข) ไม่สามารถแก้ได้)
 
ส่วนที่ว่าวิธีการแบบ single step หรือ multi step หรือ explicit หรือ implicit เป็นอย่างไรนั้น ขอไม่กล่าวตรงนี้จะครับ เพราะเรื่องมันยาว เอาเป็นว่าถ้าใครมีพื้นฐานทางด้านการคำนวณเชิงตัวเลขมาบ้างก็น่าจะเข้าใจ แต่ถ้าใครต้องแก้โจทย์พวกนี้แล้วไม่รู้เลยว่ามันมีความหมายอย่างใด ผมว่าคุณมีสิทธิเจอปัญหาตามมาแน่ครับ

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

อันที่จริงยังมีอีก ๒ เรื่องที่จะเขียน แต่ฉบับนี้ก็เห็นว่าลากยาวมาตั้ง ๕ หน้าแล้ว วันนี้ก็คงต้องขอพอแค่นี้ก่อนครับ

วันอังคารที่ 4 กรกฎาคม พ.ศ. 2560

สิทธิในการรู้คะแนนสอบของผู้อื่น MO Memoir : Tuesday 4 July 2560

รัฐธรรมนูญแห่งราชอาณาจักรไทยฉบับพุทธศักราช ๒๕๔๐ ได้วางรากฐานที่สำคัญในการบริหารจัดการบ้านเมืองไว้หลายเรื่อง โดยเฉพาะอย่างยิ่งการเปิดโอกาสให้คนทั่วไปสามารถตรวจสอบการทำงานของเจ้าหน้าที่รัฐได้โดยตรง สถาบันสำคัญสถาบันหนึ่งที่เกิดขึ้นจากรัฐธรรมนูญฉบับนี้คือการให้มีการจัดตั้ง "ศาลปกครอง"
 
ศาลปกครองทำงานด้วยระบบ "ไต่สวน" คือการให้ศาลเป็นผู้มีอำนาจในการเรียกหาเอกสารต่าง ๆ จากหน่วยงานรัฐที่เกี่ยวข้องกับคดี การทำงานตรงนี้แตกต่างจากศาลยุติธรรม (เช่น ศาลแพ่ง ศาลอาญา ศาลเฉพาะทางต่าง ๆ เช่น ศาลแรงงาน ฯลฯ) ที่ใช้ระบบ "กล่าวหา" ที่ผู้เสียหายต้องเป็นผู้ไปหาหลักฐานมาเอง แต่วิธีการที่ผู้เสียหายต้องเป็นผู้ไปหาหลักฐานมาเองนั้นใช้ไม่ได้ในกรณีที่ผู้ถูกฟ้องร้องนั้นเป็นเจ้าหน้าที่รัฐที่มีอำนาจทางปกครองอยู่ในมือ จึงจำเป็นต้องใช้ระบบไต่สวนที่กำหนดให้ศาลเป็นผู้มีอำนาจเรียกดูพยานหลักฐานต่าง ๆ (ถ้ามีแต่ไม่ยอมให้ ก็จะมีความผิด)
 
ในช่วงเวลาเดียวกันนั้นก็ได้มีการออกกฎหมาย พระราชบัญญัติข้อมูลข่าวสารของราชการ พ.ศ. ๒๕๔๐ ที่กำหนดรายละเอียดต่าง ๆ ที่เกี่ยวข้องกับการเปิดเผยข้อมูลข่าวสารของทางราชการ โดยมีปรัญาพื้นฐานข้อหนึ่งว่า "เปิดเผยเป็นหลัก ปกปิดเป็นข้อยกเว้น" แต่ทั้งนี้ไม่ได้หมายความว่าใครจะขอดูข้อมูลอะไรก็ได้ทุกอย่าง และก็ไม่ได้หมายความว่าการเปิดเผยนั้นจำเป็นต้องออกสู่สาธารณะเสมอไป ข้อมูลบางอย่างก็เปิดเผยได้เฉพาะผู้มีส่วนได้ส่วนเสียเท่านั้น (ต้องมีการชั่งน้ำหนักระหว่าง การปฏิบัติหน้าที่ ประโยชน์สาธารณะ และสิทธิของเอกชน) และข้อมูลที่จะปกปิดได้นั้นก็ต้องเข้าหลักเกณฑ์ตามที่กฎหมายกำหนดไว้
 
ข้อมูลทางการแพทย์ของผู้ป่วยก็เป็นประเด็นหนึ่งว่าจะสามารถเปิดเผยให้คนใกล้ชิดรับทราบได้แค่ไหน ตรงประเด็นนี้ทางผู้บรรยาย (การบรรยายที่ผมไปร่วมฟังมาในย่อหน้าข้างล่าง) ได้ยกตัวอย่างให้เห็นภาพดังนี้ สมมุติว่ามีคู่สมรสคู่หนึ่ง ฝ่ายสามีไปพบแพทย์ด้วยตนเองและพบว่าป่วยเป็นมะเร็ง (เป็นโรคไม่ติดต่อ) คำถามก็คือแพทย์จะบอกข้อมูลตรงนี้ให้กับผู้เป็นภรรยาทราบได้ไหม คำตอบก็คือไม่ได้ แต่ถ้าหากฝ่ายสามีไปตรวจเอดส์และพบว่าตัวเองติดเชื้อเอดส์ (โรคที่ติดต่อได้ทางเพศสัมพันธ์) ในกรณีหลังนี้ทางฝ่ายแพทย์จะสามารถแจ้งให้ทางภรรยาทราบได้ เพราะถือว่าเป็นการป้องกันฝ่ายภรรยาไม่ให้ได้รับความเสียหาย
 
ปลายเดือนพฤษภาคมและต้นเดือนมิถุนายน พ.ศ. ๒๕๔๖ ทางมหาวิทยาลัยได้จัดการสัมมนาเรื่อง "กฎหมายปกครองสำหรับบุคลากรของจุฬาลงกรณ์มหาวิทยาลัย" รวมทั้งสิ้น ๓ วันเต็ม เป็นเรื่องเกี่ยวกับการเปิดเผยข้อมูลข่าวสารของราชการ กับการออกคำสั่งปกครอง อันที่จริงงานนี้เขาเชิญเฉพาะผู้บริหารระดับตั้งแต่หัวหน้าภาควิชา ผู้อำนวยการส่วน เลขานุการคณะ ฯลฯ ขึ้นไป แต่ผมกลับถูกส่งให้ไปฟังการอบรมดังกล่าวแทน ซึ่งก็นับว่าโชคดีที่ได้เข้าร่วมการอบรมดังกล่าว เพราะช่วงนั้นทางผู้บริหารในหน่วยราชการต่าง ๆ ที่มีอำนาจออกคำสั่งปกครอง ส่วนใหญ่ยังเคยชินกับการใช้อำนาจอำเภอใจที่คนอื่นไม่สามารถตรวจสอบหรือร้องเรียนได้ แต่พอมีศาลปกครองเกิดขึ้น ทำให้คดีความต่าง ๆ เริ่มหลั่งไหลเข้ามาสู่ศาลปกครอง แม้แต่ตัวสถาบันการศึกษาเองก็ตาม ก็ยังโดนฟ้องร้องเรื่องเงื่อนไขในการสำเร็จการศึกษาและการขอดูคะแนนสอบ
 
เอกสารที่ผมสแกนมาให้ดูวันนี้เป็นเอกสารที่ได้รับจากในการประชุมเมื่อวันศุกร์ที่ ๖ มิถุนายน ๒๕๔๖ ที่ห้องประชุมมิราเคิล แกรนด์ บอลรูม โรงแรม มิราเคิล แกรนด์ คอนเวนชั่น ถนนวิภาวดีรังสิต เอกสารประกอบการสัมมนาดังกล่าวจัดเตรียมโดย ดร.ฤทัย หงส์สิริ ในชื่อ "กฎหมายข้อมูลข่าวสารของราชการกับการปฏิบัติงาน" คัดมาเฉพาะเรื่องเกี่ยวข้องกับการขอทราบคะแนนสอบของผู้อื่น อันเป็นเรื่องที่เกิดขึ้นเมื่อปีพ.ศ. ๒๕๔๑ ที่ผู้ปกครองของนักเรียนที่สอบไม่ติด ขอทราบว่าลูกของตนนั้นสอบได้คะแนนเท่าใด และคนที่ทางโรงเรียนรับนั้นสอบได้คะแนนเท่าใด ลองอ่านเอาเองก่อนนะครับ



ในเหตุการณ์นั้น (พ.ศ. ๒๕๔๑) ผู้ปกครองที่ลูกตัวเองสอบไม่ติดประสงค์จะทราบว่าลูกสอบได้คะแนนเท่าใด และขอดูกระดาษคำตอบของลูกตัวเอง และของเด็กคนอื่นที่สอบติดด้วย โดยขอใช้สิทธิตามกฏหมายข้อมูลข่าวสารของราชการ ขอทราบข้อมูลดังกล่าวจากทางมหาวิทยาลัย แต่โดนทางมหาวิทยาลัยปฏิเสธ (มีประเด็นที่ต้องพิจารณาว่าคะแนนสอบและกระดาษคำตอบนั้นเป็น "ข้อมูลส่วนบุคคล" หรือ "ข้อมูลข่าวสารของราชการ") จึงได้ทำการอุทธรณ์ต่อคณะกรรมการวินิจฉัยการเปิดเผยข้อมูลข่าวสาร ซึ่งในที่สุดแล้วทางคณะกรรมการฯ ได้วินิจฉัยว่าเป็นข้อมูลข่าวสารที่สามารถเปิดเผยได้ จึงมีคำสั่งให้ทางมหาวิทยาลัยเปิดเผยข้อมูลตามที่มีการร้องขอ
 
แต่เรื่องยังไม่จบเพียงแค่นั้น เพราะผู้ปกครองนักเรียนที่สอบได้ร้องคัดค้านคำสั่งดังกล่าว โดยได้ยื่นเรื่องฟ้องร้องต่อศาลยุติธรรม ซึ่งในที่สุดแล้วทางศาลฏีกาก็ได้มีคำพิพากษาเห็นฟ้องกับคำวินิจฉัยของคณะกรรมการวินิจฉัยการเปิดเผยข้อมูลข่าวสาร โดยได้ยกฟ้องคำร้องของผู้ปกครองนักเรียนที่สอบได้ ที่ว่าไม่ให้เปิดเผย
 
หมายเหตุ : รัฐธรรมนูญฉบับ ๒๕๔๐ บัญญัติให้มีการตั้งศาลปกครอง แต่กว่าจะมีการตั้งเป็นองค์กรที่สามารถปฏิบัติหน้าที่ได้ก็ล่วงเข้าปีพ.ศ. ๒๕๔๔ ดังนั้นในช่วงดังกล่าวเมื่อยังไม่มีศาลปกครองทำหน้าที่พิจารณาคดีทางปกครอง ก็เลยต้องให้ศาลยุติธรรมทำหน้าที่แทน

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

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

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