- DIAMOND là một cách tiếp cận không nén môi trường Atari thành các token tiềm ẩn rời rạc, mà mô phỏng bằng mô hình thế giới khuếch tán rồi huấn luyện tác nhân học tăng cường bên trong đó
- Khung hình tiếp theo được tạo có điều kiện theo hành động của tác nhân và các khung hình trước đó; quá trình này được lặp lại để xây dựng một mô hình thế giới có thể chơi được
- Ở số bước khử nhiễu thấp, DDPM không ổn định, nhưng EDM tạo được quỹ đạo ổn định ngay cả với 1 bước; DIAMOND dùng n=3 để đảm bảo tính nhất quán
- Trên Atari 100k, đạt điểm trung bình chuẩn hóa theo con người là 1.46, thiết lập mức hiệu năng tốt nhất mới cho tác nhân được huấn luyện bên trong mô hình thế giới với điều kiện 100k khung hình
- Việc áp dụng cho CS:GO dùng 87 giờ dữ liệu chơi của con người, pipeline 2 giai đoạn gồm dự đoán độ phân giải thấp + upsampling, cùng mô hình 381M tham số; có thể chơi ở khoảng 10 FPS trên RTX 3090
Bài toán mô hình hóa thế giới mà DIAMOND muốn giải quyết
- Mô hình thế giới là một cách tiếp cận để huấn luyện tác nhân học tăng cường an toàn hơn và hiệu quả mẫu hơn
- Các mô hình thế giới gần đây chủ yếu mô hình hóa động lực học của môi trường dưới dạng chuỗi biến tiềm ẩn rời rạc
- Biểu diễn nén như vậy có thể bỏ sót chi tiết thị giác quan trọng đối với học tăng cường
- DIAMOND áp dụng mô hình khuếch tán, vốn đạt kết quả mạnh trong tạo sinh ảnh, vào mô hình thế giới
- Tên đầy đủ của DIAMOND là DIffusion As a Model Of eNvironment Dreams
Cách mô hình thế giới khuếch tán hoạt động
- Mô hình khuếch tán được huấn luyện để dự đoán khung hình tiếp theo của trò chơi
- Đầu vào bao gồm hành động của tác nhân và các khung hình trước đó
- Khi tác nhân liên tục cung cấp hành động mới, mô hình khuếch tán sẽ cập nhật trạng thái trò chơi
- Nhờ quá trình tạo sinh tự hồi quy này, mô hình khuếch tán đóng vai trò như một mô hình thế giới nơi tác nhân có thể học và chơi
Thiết kế khử nhiễu để chạy nhanh
- Để làm cho mô hình thế giới nhanh, cần giảm số bước khử nhiễu
- DDPM trở nên không ổn định ở số bước khử nhiễu thấp do lỗi tự hồi quy tích lũy
- EDM tạo ra quỹ đạo ổn định ngay cả khi khử nhiễu 1 bước
- Trong môi trường Boxing, khử nhiễu 1 bước nội suy giữa các kết quả khả dĩ, khiến người chơi màu đen khó dự đoán được tạo ra một cách mờ nhòe
- Nhiều bước khử nhiễu hơn giúp chọn tốt hơn một chế độ cụ thể trong nhiều chế độ chuyển tiếp khả dĩ, tăng tính nhất quán theo thời gian
- Mô hình thế giới khuếch tán của DIAMOND dùng n=3 bước khử nhiễu
- Chuyển động của người chơi màu trắng do chính sách điều khiển, và hành động đó được đưa vào mô hình thế giới, nên được dự đoán đúng bất kể số bước khử nhiễu
Hiệu năng Atari 100k
- DIAMOND mô hình hóa chi tiết thị giác quan trọng tốt hơn IRIS dựa trên token rời rạc
- Khi huấn luyện tác nhân học tăng cường bên trong mô hình thế giới khuếch tán, DIAMOND đạt điểm trung bình chuẩn hóa theo con người là 1.46 trên Atari 100k
- Điểm này cao hơn con người 46%
- Đây là hiệu năng tốt nhất mới trong số các tác nhân được huấn luyện chỉ bên trong mô hình thế giới với điều kiện 100k khung hình
Cách mở rộng sang CS:GO
- Mô hình thế giới khuếch tán của DIAMOND cũng được áp dụng cho mô phỏng môi trường 3D như Counter-Strike: Global Offensive
- Phiên bản CS:GO dùng một tập dữ liệu cố định gồm 87 giờ chơi của con người thay vì dữ liệu do tác nhân học tăng cường thu thập
- Để giảm chi phí huấn luyện, áp dụng pipeline 2 giai đoạn
- Trước tiên dự đoán động lực học ở độ phân giải thấp
- Sau đó upsample bằng mô hình thứ hai
- Kích thước mô hình tăng từ 4.4M tham số cho Atari lên 381M tham số cho CS:GO
- Trong đó 51M tham số thuộc về bộ upsampler bổ sung
- Upsampler dùng lấy mẫu xác suất để cải thiện chất lượng tạo sinh hình ảnh
- Mô hình động lực học không cần lấy mẫu xác suất
- Mô hình CS:GO được huấn luyện trong 12 ngày trên RTX 4090 và có thể chơi ở khoảng 10 FPS trên RTX 3090
Tự chạy và tài liệu công khai
- Mã nguồn, tác nhân và các mô hình thế giới có thể chơi được được công bố trong kho GitHub
- Ví dụ cài đặt dùng các lệnh sau
git clone https://github.com/eloialonso/diamond.git
cd diamond
conda create -n diamond python=3.10
conda activate diamond
pip install -r requirements.txt
- Chạy mô hình thế giới Atari:
python src/play.py --pretrained
- Chạy mô hình thế giới CS:GO:
git checkout csgo
python src/play.py
- Có thể xem thêm chi tiết trong bài báo
Các chế độ lỗi còn lại và giới hạn scaling
- Mô hình thế giới khuếch tán của DIAMOND vẫn còn nhiều chế độ lỗi
- Kỳ vọng rằng việc mở rộng dữ liệu và tính toán sẽ cải thiện nhiều khía cạnh
- Tuy nhiên cũng có những giới hạn không thể giải quyết chỉ bằng scaling, chẳng hạn các vấn đề bắt nguồn từ bộ nhớ mô hình hạn chế
- Một giới hạn thú vị là mô hình cho phép nhảy liên tiếp
- Mô hình khái quát hóa tác động của việc nhảy lên hình học của cảnh
- Vì dữ liệu huấn luyện không xuất hiện nhảy liên tiếp đủ thường xuyên, mô hình không học được rằng nhảy liên tiếp đáng lẽ là không thể
1 bình luận
Các ý kiến trên Hacker News
Video này https://x.com/Sentdex/status/1845146540555243615 trông quá giống giấc mơ của tôi
Đôi khi trong mơ, nếu tôi cố nhảy thật cao thì nó sẽ chuyển sang một nơi khác đúng kiểu như vậy, và đồ vật cũng cứ thay đổi như thế
Thật đáng kinh ngạc khi thấy nó gần với trải nghiệm trong mơ thực tế đến mức nào
Khi các mô hình khuếch tán bắt đầu được chú ý, tôi cũng liên tưởng đến văn bản bị vỡ trong ảnh sinh ra theo cách tương tự
Có lẽ đó là một manh mối rằng một phần vô thức của con người hoạt động khá giống nguyên lý của mô hình khuếch tán
Trong thị giác thì ít nổi bật hơn, nhưng trong sự chú ý và chính suy nghĩ thì dễ thấy hơn
Giấc mơ của tôi thường hoàn toàn nhất quán về mặt hình ảnh, tôi thậm chí từng dùng Google Maps trong mơ; địa lý thì sai, nhưng bên trong nó nhất quán
Tuy nhiên tôi chưa từng mơ tỉnh trong mơ, nên khác biệt đó có thể có ảnh hưởng
Trong trạng thái mơ có thứ gì đó bị ngắt kết nối, và ở đây rõ ràng cũng có một sự đứt đoạn tương tự
Mô hình này có vẻ thiếu world model kiểu như khả năng suy luận không gian mạnh và kỳ vọng về tính liên tục mà động vật có
Tất nhiên, có lẽ điều đó cũng sẽ được học
Đây là mô hình 300 triệu tham số, bằng 1/1300 quy mô của llama-3 lớn, và được huấn luyện trên 5 triệu khung hình trong 12 ngày bằng GTX4090
Đây là mức công việc mà các công ty công nghệ lớn làm vào năm 2015
Nếu làm điều tương tự ở quy mô công nghiệp như các mô hình ngôn ngữ lớn thì chắc sẽ thật sự khủng khiếp
Counter Strike hiện đã chạy mượt hơn nhiều so với thế này, và cũng không lãng phí lượng tính toán khổng lồ
Tốc độ tiến bộ thật sự đáng kinh ngạc
Chúng ta đang sống trong một thời đại thật thú vị
Đây là một kết quả khá phấn khích
Có vẻ đã có thể dùng để tạo xấp xỉ vật lý thực tế trong game engine
Nếu dùng một physics engine nặng hơn và thực tế hơn, hoặc có thể CGI, để tạo nhiều đoạn gameplay, rồi huấn luyện mô hình xấp xỉ vật lý, ta sẽ có một physics engine nhẹ
Cũng có thể đặt nhiều mô hình chuyên biệt, như cho động lực học của khói, cho vụ nổ
Dù có hallucination, có lẽ cũng không tệ hơn các lỗi vật lý thường gặp trong game
Lỗi vật lý thì phổ biến, nhưng có thể ưu tiên sửa từ những lỗi nghiêm trọng nhất khiến không thể tiếp tục game
Nếu là mô hình hộp đen thì làm như vậy sẽ khó hơn nhiều
Vật lý Newton vốn đã được hiểu rất rõ và tính toán cũng khá hiệu quả
Làm sao việc tính vật lý Newton bằng một hàm xấp xỉ có hàng tỷ tham số lại có thể rẻ hơn?
Trông có vẻ đắt hơn và kém chính xác hơn so với mô phỏng vật lý đúng nghĩa
Với mô hình học máy thì không có bảo đảm như vậy
Cách này có lẽ chỉ ổn trong bối cảnh những game được cố ý làm cẩu thả
Nếu chỉ là hiệu ứng hình ảnh thì ổn, nhưng nếu ảnh hưởng đến gameplay thì chẳng phải mỗi người chơi sẽ nhận kết quả khác nhau sao?
Tôi tò mò muốn hỏi người đã thật sự thử
Trong quá trình xử lý, nó có tôn trọng hoặc xây dựng một bản đồ game nào không, hay giống như một cuộc dạo chơi trong giấc mơ ảo giác, nơi không thể quay lại cùng một chỗ hai lần và cả chiều không gian cũng kỳ lạ?
Bản đồ game có hữu hạn không?
Có vẻ nó không tạo bất kỳ bản đồ nào, cũng không có nhận thức có ý nghĩa về thứ giống trạng thái game
Tương tự RPG dựa trên LLM
Kiểu như nhặt một thanh kiếm bỏ vào túi trống, rồi đột nhiên lấy ra một ổ bánh mì để ăn
Trông gần với bản đồ vô hạn hơn
Không có bất kỳ dạng nhận thức bản đồ nào
Nó gần với một AI hồi tưởng/phát lại, nhớ khá chính xác những gì có trong tập dữ liệu huấn luyện; còn nếu làm hành động không có trong dữ liệu như đi thẳng vào tường thì nó sụp hoàn toàn và phun ra nhảm nhí
Nhảm nhí có vẻ hợp lý, nhưng vẫn là nhảm nhí
Đây là công trình mà nhóm Schmidhuber đã làm năm 2018
https://worldmodels.github.io/
Tôi muốn chỉ ra điểm này
Ở đây dùng từ giấc mơ là chính xác, và cảnh lái xe cũng giống cảm giác lái xe trong mơ
Tôi nghĩ mình đã hiểu đại khái tiền đề cơ bản của Stable Diffusion, tức là tạo ra hình ảnh chân thực bằng cách chạy ngược quá trình khử nhiễu
Tuy nhiên theo tôi biết thì việc này luôn diễn ra ở cấp độ pixel
Có nghiên cứu nào thử làm việc này ở cấp độ asset 3D không?
Kiểu như nhét các asset game engine có vị trí và hướng vào, rồi điều chỉnh cho đến khi một cảnh trông hợp lý được tái dựng
Nếu làm được, ta có thể “mơ” ra bản đồ thật và vật lý thật, và có thể tránh được đầu ra hơi lộn xộn trong các demo kiểu này chăng?
Cho đến nay nó được dùng để học một cảnh từ ảnh chụp ở nhiều góc, rồi điều chỉnh mật độ của đám mây điểm để tái dựng theo dạng thể tích
Nhưng cũng có thể huấn luyện mô hình trên nhiều cảnh khác nhau, rồi thực hiện diffusion trên một đám mây điểm ngẫu nhiên để tạo cảnh mới
Việc render đám mây điểm theo thời gian thực cũng rất hiệu quả, nên có thể dùng để tạo ra các thế giới game cực kỳ chân thực thay vì hình học đa giác
Có vẻ đã có người nghĩ đến việc đó: https://ar5iv.labs.arxiv.org/html/2311.11221
Diffusion diễn ra trong không gian tiềm ẩn, và đó là một trong những đột phá lớn khiến mọi thứ hoạt động tốt
Có một mô hình để mã hóa/giải mã giữa pixel và không gian tiềm ẩn
Không gian tiềm ẩn có thể mã hóa các khái niệm cần thiết vào các chiều cần thiết, và thường có số chiều thấp hơn không gian pixel
Vì vậy ta lấy một không gian tiềm ẩn có nhiễu, dùng mô hình diffusion để khử nhiễu, rồi dùng một mô hình khác là biến phân tự mã hóa để giải mã về không gian pixel
Những chiếc xe này khá thường xuyên va chạm
Ví dụ: https://github.com/NVlabs/CTG
Cách reverse engineering mà bạn mô tả có thể hấp dẫn vì dễ hiểu
Dù vậy, tôi nghĩ tập trung vào sinh ở cấp độ pixel mới là hướng tiếp cận đúng
Đầu ra hơi lộn xộn có lẽ sẽ được cải thiện trong thời gian ngắn
Vì Doom(https://gamengen.github.io/) và công trình này đã chứng minh điều đó là khả thi, rất có khả năng đã có nhiều nghiên cứu hơn đang diễn ra để tìm kiến trúc phù hợp nhằm mở rộng lên HD với ảo giác tối thiểu
Điều tương tự cũng đã xảy ra với video, nên có lẽ ta sẽ sớm thấy một đột phá ở mức tương tự
Việc tạo ảnh diễn ra trong không gian này, nơi có ít đầu ra hơn số pixel của ảnh cuối, rồi sau đó được chuyển thành pixel thông qua VAE
Tôi vẫn không hiểu sao mọi người không nhận ra thứ nhiễu địa ngục trong ảnh và video từ mạng nơ-ron
Với tôi thì ngay từ đầu nó luôn nhận ra được và thấy đáng sợ
Tôi cũng cảm thấy ảnh gần như luôn kỳ dị theo cách nào đó, nhưng có thể không nói về cùng một thứ
Bạn có thể mô tả rõ hơn trải nghiệm đó không?
Tôi vừa kiểm tra nhanh, và nó chạy rất tốt trên card AMD với ROCM PyTorch
Khi chạy ngắn thì trông khá ổn
Theo thời gian, chi tiết biến mất khá nhanh, và vũ khí có xu hướng biến thành một đống rác sặc sỡ
Tôi cũng muốn chỉ ra rằng không có video nào cho thấy chuyện gì xảy ra khi đi thẳng vào tường
Tình huống đó không được xử lý cho lắm thanh lịch
Điểm thật sự thú vị là khi huấn luyện nó trên GTA mới nhất cùng các video thực tế liên quan, rồi dùng để nâng cấp hình ảnh của những game cũ như Vice City theo thời gian thực
Do thiếu tính nhất quán theo thời gian, nó vẫn sẽ có cảm giác như mơ, nhưng vì nền tảng vốn nhất quán nên tôi nghĩ đó không phải vấn đề lớn, và trông sẽ rất ấn tượng
Như bạn chỉ ra, tính nhất quán theo thời gian không tốt
Một pixel xanh lá độ phân giải thấp của ngọn núi ở xa có thể được diễn giải là cây ăn quả ở một khung hình, rồi là cây thông ở khung hình tiếp theo
Có một demo làm điều tương tự vào năm 2021:
https://www.youtube.com/watch?v=3rYosbwXm1w
Nếu chỉ là lái xe quanh thành phố không mục đích thì có thể, và chỉ vậy thôi cũng đã rất ngầu rồi
Điểm cốt lõi không phải là nó có thể tái tạo thế giới game, mà là nó có thể mô phỏng thế giới thực
Người ta dùng video game để huấn luyện chỉ vì dữ liệu cần thiết có thể được tổng hợp rẻ và dễ
Hệ thống này không biết rằng nó đang mô phỏng một trò chơi
Nếu cho nó hàng nghìn đến hàng triệu giờ video thế giới thực cùng đầu vào của tác nhân, bạn sẽ có được mô phỏng của thế giới thực
https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...
Càng lúc càng trở nên phi lý
Nếu đó là một vòng lặp mạnh kiểu khung hình cũ và input → khung hình mới, tôi tò mò chuyện gì sẽ xảy ra nếu bắt đầu bằng một hình ảnh không phải Counter-Strike
Hoặc nếu đưa vào một bản đồ mà mô hình chưa từng thấy, nó sẽ bám theo, hay quay về các bản đồ Counter-Strike quen thuộc?
Nhìn mấy thứ như vậy khiến tôi có cảm giác như đang mơ về Dust 2, nên tôi muốn gọi đó là “giấc mơ”