การใช้งาน Pytorch ของเครือข่ายเชิงสัมพันธ์ - โมดูลเครือข่ายประสาทที่เรียบง่ายสำหรับการใช้เหตุผลเชิงสัมพันธ์
นำไปใช้และทดสอบในงานประเภท Clevr
การเรียงลำดับของ Clevr เป็นรุ่นที่เรียบง่ายของ Clevr. ซึ่งประกอบด้วย 10,000 ภาพและคำถาม 20 ข้อ (10 คำถามเชิงสัมพันธ์และ 10 คำถามที่ไม่เกี่ยวข้องกัน) ต่อภาพแต่ละภาพ 6 สี (สีแดง, เขียว, สีน้ำเงิน, สีส้ม, สีเทา, สีเหลือง) ถูกกำหนดให้กับรูปร่างที่เลือกแบบสุ่ม (สี่เหลี่ยมหรือวงกลม) และวางไว้ในภาพ
คำถามที่ไม่ใช่ความสัมพันธ์ประกอบด้วย 3 ชนิดย่อย:
คำถามเหล่านี้เป็น "ไม่เกี่ยวข้อง" เพราะตัวแทนจำเป็นต้องมุ่งเน้นไปที่วัตถุบางอย่าง
คำถามเชิงสัมพันธ์ประกอบด้วย 3 ชนิดย่อย:
คำถามเหล่านี้เป็น "ความสัมพันธ์" เพราะตัวแทนต้องพิจารณาความสัมพันธ์ระหว่างวัตถุ
คำถามจะถูกเข้ารหัสเป็นเวกเตอร์ที่มีขนาด 11: 6 สำหรับเวกเตอร์ร้อนหนึ่งอันสำหรับสีบางสีระหว่าง 6 สี 2 สำหรับเวกเตอร์ร้อนหนึ่งตัวของคำถามเชิงสัมพันธ์/ไม่ใช่ความสัมพันธ์ 3 สำหรับเวกเตอร์ร้อนหนึ่งชนิดของ 3 ชนิดย่อย

เช่นภาพตัวอย่างที่แสดงเราสามารถสร้างคำถามที่ไม่สัมพันธ์เช่น:
และคำถามเชิงสัมพันธ์:
สร้างสภาพแวดล้อม conda จากไฟล์ environment.yml
$ conda env create -f environment.yml
เปิดใช้งานสภาพแวดล้อม
$ conda activate RN3
หากคุณไม่ได้ใช้ Conda Install Python 3 ปกติและใช้ pip install เพื่อติดตั้งการพึ่งพาที่เหลืออยู่ รายการการพึ่งพาสามารถพบได้ในไฟล์ environment.yml
$ ./run.sh
หรือ
$ python sort_of_clevr_generator.py
ในการสร้างชุดข้อมูลประเภท Clevr และ
$ python main.py
เพื่อฝึกอบรมแบบจำลอง RN แบบไบนารี หรือใช้
$ python main.py --relation-type=ternary
เพื่อฝึกอบรมรุ่น RN Ternary
ในกระดาษต้นฉบับงานเรียงลำดับของ Clevr ใช้โมเดลที่แตกต่างจากงาน Clevr อย่างไรก็ตามเนื่องจากโมเดลที่ใช้ Clevr ต้องใช้เวลาน้อยลงในการคำนวณ (เครือข่ายมีขนาดเล็กกว่ามาก) รุ่นนี้ใช้สำหรับงานแบบ Clevr
| เครือข่ายเชิงสัมพันธ์ (ยุค 20) | CNN + MLP (ไม่มี RN, EPOCH 100th) | |
|---|---|---|
| คำถามที่ไม่ใช่ความสัมพันธ์ | 99% | 66% |
| คำถามเชิงสัมพันธ์ | 89% | 66% |
CNN + MLP เกิดขึ้นกับข้อมูลการฝึกอบรมมากเกินไป
เครือข่ายเชิงสัมพันธ์แสดงผลลัพธ์ที่ดีกว่าในคำถามเชิงสัมพันธ์และคำถามที่ไม่เกี่ยวข้อง
@GNGDB เร่งรุ่นขึ้น 10 ครั้ง