Skip to content
Tayakorn

ทำไมตาถึงอ่านกราฟนี้ได้เร็วกว่า

LEVEL 0 · ปูพื้นจากศูนย์

ตาเห็นก่อนที่สมองจะคิด

บทนี้ปลดล็อกข้อเท็จจริงหนึ่งที่ฟังดูเหลือเชื่อ — มีงานสายตาบางประเภทที่ใช้เวลาเท่าเดิม ไม่ว่าข้อมูลบนหน้าจะมี 160 ชิ้นหรือ 1,600 ชิ้น

ถ้าคุณใช้มันเป็น คุณจะหยุดขอให้คนดู "ช่วยดูตรงนี้หน่อย" ไปตลอดกาล

2.1 ลองพิสูจน์ด้วยตาเอง

ในภาพข้างล่างมีตัวเลข 160 ตัว ซ่อนเลข 3 ไว้ 6 ตัว ลองหาจากแผงบนให้ครบก่อน แล้วค่อยเลื่อนลงไปดูแผงล่าง อย่าเพิ่งแอบดู

แผงบน — หาเลข 3 ให้ครบ 6 ตัว6865471450219764272369955876849699299361717220864997503257184318541406440872841075911054367042475406002547116615506955672727871253127060111909541766558668954941เวลาที่ใช้ แปรตามจำนวนตัวเลขบนหน้าแผงล่าง — ตัวเลขชุดเดิมเป๊ะ6865471450219764272369955876849699299361717220864997503257184318541406440872841075911054367042475406002547116615506955672727871253127060111909541766558668954941เวลาที่ใช้ เกือบไม่ขึ้นกับจำนวนตัวเลขเลย
FIG 2.1 ตัวเลข 160 ตัวชุดเดียวกันทั้งสองแผง ซ่อนเลข 3 ไว้ 6 ตัวเท่ากัน · แผงบนคุณต้องไล่อ่านทีละตัว เวลาที่ใช้แปรตามจำนวนตัวเลข · แผงล่างทั้งหกตัวผุดขึ้นพร้อมกันโดยคุณไม่ได้ตั้งใจหา และต่อให้เพิ่มเป็น 1,600 ตัวก็ยังเร็วเท่าเดิม

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

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

2.2 กลไก: สายตามีสองโหมด ไม่ใช่โหมดเดียว

ความแตกต่างข้างบนไม่ได้เกิดจาก "ตั้งใจมากขึ้น" แต่เกิดจากการที่สมองใช้คนละกลไกกันไปเลย

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

💡 preattentive attributes — คุณสมบัติทางภาพที่ระบบสายตาประมวลผลได้ก่อนที่ความสนใจจะไปถึง คำว่า pre-attentive แปลตรงตัวว่า "ก่อนการใส่ใจ" งานคลาสสิกที่ทำให้แนวคิดนี้เป็นที่รู้จักคือชุดการทดลองของ Anne Treisman ในทศวรรษ 1980

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

2.3 อะไรบ้างที่เข้าโหมดขนานได้

ไม่ใช่ทุกคุณสมบัติจะทำงานแบบนี้ ที่ใช้ได้จริงในงานกราฟมีอยู่ไม่กี่อย่าง

คุณสมบัติใช้ได้หมายเหตุ
สี (hue)ได้ดีมากแรงที่สุดเมื่อมีสีเดียวที่ต่างจากพวก · ยิ่งจำนวนสีมาก การเด้งยิ่งอ่อนลงเรื่อย ๆ
ขนาดได้ต้องต่างพอสมควร ไม่ใช่ต่าง 5%
ความเข้มได้อ่อนกว่าสีนิดหน่อย
ทิศทาง / ความเอียงได้ใช้ได้ดีกับเส้นแนวโน้ม
ตำแหน่งที่หลุดจากแนวได้จุดที่ออกนอกกลุ่มเด้งขึ้นมาเอง
รูปทรงได้แย่สามเหลี่ยมในกองสี่เหลี่ยมต้องไล่หา
สองคุณสมบัติพร้อมกันไม่ได้"วงกลมสีแดง" ในกองที่มีทั้งวงกลมสีน้ำเงินและสี่เหลี่ยมสีแดง ต้องไล่ทีละตัว

แถวสุดท้ายสำคัญที่สุด และเป็นเหตุผลว่าทำไมกราฟที่ใช้ทั้งสีและรูปทรงแยกหลายมิติพร้อมกันถึงอ่านช้ากว่าที่คนทำคาดไว้เสมอ

2.4 สร้างตารางของคุณเอง

ตารางในภาพไม่ได้วาดด้วยมือ มันมาจากสคริปต์นี้ (เรียกว่า preattentive.py ในเล่มนี้) ซึ่งใช้ random.seed ตายตัว ผลลัพธ์จึงเหมือนกันทุกครั้งที่รัน

"""สร้างกองตัวเลขสำหรับการทดลอง 'หาเลข 3' — seed คงที่ ผลลัพธ์เหมือนกันทุกครั้ง"""
import random

ROWS, COLS, TARGET, N_TARGET = 8, 20, 3, 6
random.seed(1984)  # ปีที่ Cleveland กับ McGill ตีพิมพ์งานที่เราจะเจอในบทที่ 5

others = [d for d in range(10) if d != TARGET]
grid = [[random.choice(others) for _ in range(COLS)] for _ in range(ROWS)]

spots = random.sample([(r, c) for r in range(ROWS) for c in range(COLS)], N_TARGET)
for r, c in spots:
    grid[r][c] = TARGET

print(f"ตาราง {ROWS}x{COLS} = {ROWS * COLS} ตัว · ซ่อนเลข {TARGET} ไว้ {N_TARGET} ตัว")
print("ตำแหน่งเป้าหมาย (แถว,คอลัมน์ เริ่มที่ 0):", sorted(spots))
print()
for row in grid:
    print(" ".join(str(d) for d in row))

ผลรันจริง

ตาราง 8x20 = 160 ตัว · ซ่อนเลข 3 ไว้ 6 ตัว
ตำแหน่งเป้าหมาย (แถว,คอลัมน์ เริ่มที่ 0): [(0, 19), (1, 17), (2, 14), (3, 1), (4, 8), (6, 9)]

6 8 6 5 4 7 1 4 5 0 2 1 9 7 6 4 2 7 2 3
6 9 9 5 5 8 7 6 8 4 9 6 9 9 2 9 9 3 6 1
7 1 7 2 2 0 8 6 4 9 9 7 5 0 3 2 5 7 1 8
4 3 1 8 5 4 1 4 0 6 4 4 0 8 7 2 8 4 1 0
7 5 9 1 1 0 5 4 3 6 7 0 4 2 4 7 5 4 0 6
0 0 2 5 4 7 1 1 6 6 1 5 5 0 6 9 5 5 6 7
2 7 2 7 8 7 1 2 5 3 1 2 7 0 6 0 1 1 1 9
0 9 5 4 1 7 6 6 5 5 8 6 6 8 9 5 4 9 4 1

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

2.5 ทำไมคำอธิบายสัญลักษณ์ถึงเป็นศัตรู

กลับไปดู FIG 1.1 อีกครั้ง แผงซ้ายมีคำอธิบายสัญลักษณ์อยู่ด้านล่าง ซึ่งบังคับให้คนดูจับคู่ "แท่งที่สาม" กับ "หน่วย ค" ด้วยการกวาดสายตาไปกลับ

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

ถ้าคนดูต้อง "หา" อะไรสักอย่าง แปลว่าคุณยังไม่ได้เข้ารหัสสิ่งที่สำคัญลงไปในภาพ

Read the full book