Khi nào tôi nên ngoại suy và khi nào tôi nên nội suy?


16

Tôi gặp khó khăn khi hiểu khi nào nên ngoại suy và khi nào cần nội suy. Trong gaffer trên các trò chơi, anh ta nói để nội suy nhưng sau đó trong một bài viết khác, nó đề nghị ngoại suy người chơi. Vì vậy, câu hỏi của tôi là khi nào thì tốt hơn để ngoại suy và khi nào thì tốt hơn để nội suy?


22
Có hai loại người. Những người có thể ngoại suy từ dữ liệu không đầy đủ
Almo

2
@ Almo và những loại khác? Hãy nói cho tôi biết, tôi phải biết!
DJMcMayhem

4
@DJMcMayhem ... và những người thích ăn cá ngón tay.
dùng253751

4
Tôi không hiểu câu hỏi. Bạn có thể giải thích một cách để "nội suy" các điểm {(1, a), (2, b)} để dự đoán c trong (3, c) không? Và bạn sẽ ngoại suy nó như thế nào?
Mehrdad

Câu trả lời:


29

Bạn nội suy khi bạn biết các giá trị 'trước' và 'sau'.

Ví dụ: trong trò chơi điểm và nhấp, người chơi hiện đang ở vị trí X và từ giao diện của anh ta, anh ta nhấp vào vị trí Y. Bạn phải nội suy chuyển vị giữa X và Y vì bạn biết hai giá trị.

Bạn ngoại suy khi bạn đoán những gì sẽ là giá trị trong tương lai, dựa trên những gì bạn đã biết.

Ví dụ: trong trò chơi bắn súng góc nhìn thứ nhất, người chơi ở vị trí X và anh ta đang ấn mũi tên LÊN trên bàn phím của mình trong giây cuối cùng, bạn có thể cho rằng anh ta sẽ làm điều này một lần nữa trong giây tiếp theo vì về cơ bản đó là hành vi thường xuyên nhất trong trò chơi của bạn; Vì vậy, bạn ngoại suy vị trí mà anh ấy sẽ là khung hình tiếp theo. Máy chủ gửi nó cho các máy khách trò chơi khác, điều này cho thấy sự chậm trễ trong việc truyền từ máy chủ đến người chơi.

Phép ngoại suy được sử dụng chủ yếu để dự đoán chuyển động. Máy chủ trò chơi không cần thiết , nhưng máy khách trò chơi cần nó để hiển thị một tầm nhìn hơi thực tế và hiện tại về tình trạng của trò chơi nhằm mang lại trải nghiệm hình ảnh mượt mà cho người chơi.


Tôi hiểu phần đó nhưng điều tôi không hiểu là khi nào tôi nên sử dụng từng phần. Ví dụ như, nếu tôi nội suy một người chơi, sẽ có một sự chậm trễ để anh ta thực sự nhìn thấy chuyển động nhưng nếu tôi ngoại suy thì nó sẽ tức thời hơn nhưng nó có thể không chính xác và sẽ cần phải sửa. Có phải thường mong muốn có chuyển động tức thời từ ngoại suy hoặc chuyển động nhất quán hơn từ nội suy?
J leong ngày

@Jleong Bạn muốn trò chơi được trình bày mượt mà nhất có thể cho người dùng. Bạn nội suy trạng thái hiện tại của trò chơi và bạn ngoại suy cách nó sẽ ở trong một vài khung. Bạn gửi các giá trị ngoại suy cho những người chơi khác để giải thích cho sự chậm trễ trong việc truyền mạng. Nếu bạn gửi các giá trị nội suy, trò chơi dường như bị lag và nó sẽ không vui. (Tôi đã chỉnh sửa câu trả lời của mình. Tôi hy vọng nó sẽ xóa nó thêm một chút nữa.)
Vaillancourt

oh ok vậy ngoại suy được sử dụng khi bạn muốn nó khách hàng dự đoán những gì sẽ xảy ra? Nếu vậy thì điểm nội suy là gì nếu bạn luôn có thể ngoại suy để giữ cho trò chơi gần với thời gian thực? Vì vậy, giống như một FPS, người chơi sẽ được ngoại suy và những người chơi khác được nội suy?
J leong

Nói chung, máy chủ thực hiện mọi thứ: nó nội suy dựa trên những gì nó biết và dựa vào đó, nó ngoại suy các giá trị và gửi chúng cho khách hàng để họ đến kịp thời để trình bày cho người chơi. Trong FPS, phép nội suy được sử dụng để hiển thị những thứ như đạn, AI, v.v. Khi thực hiện Khung B (đến từ Khung A), nó sẽ nội suy các giá trị cho trạng thái của Khung B; nó cũng có thể bắt đầu dự đoán Khung C bằng cách nội suy các giá trị đã biết , nhưng nó sẽ phải ngoại suy các giá trị mà nó không biết về (đầu vào của người chơi). Sau đó nó sẽ gửi trạng thái "tương lai" cho khách hàng.
Vaillancourt

@Jleong Không cần suy nghĩ về sự khác biệt giữa máy khách và máy chủ, tôi có thể sử dụng phép nội suy để lấy một vị trí ở đâu đó giữa hai điểm đã biết (đối với những việc như kiểm tra va chạm có thể xảy ra giữa các khung), hoặc hơn nữa, lấy tập dữ liệu đó và lấy ra những thứ như vận tốc / quỹ đạo và gia tốc, được cho một tập hợp các điểm và được đưa ra vận tốc / gia tốc / quỹ đạo đã biết cuối cùng, tôi có thể ngoại suy nơi mà các vật thể đó có thể, trong tương lai, giả sử một khung thời gian nhất quán. Đối với giao tiếp giữa máy chủ và máy khách, vị trí ngoại suy "lạc quan" được sử dụng.
Norguard

14

Nội suy được thực hiện khi bạn có cả giá trị bắt đầu và kết thúc và bạn muốn ước tính điều gì xảy ra giữa giá trị bắt đầu và kết thúc này. Một ví dụ sẽ là di chuyển một người chơi từ Vị trí A sang Vị trí B trong một chuyển động lỏng.

Phép ngoại suy, được thực hiện khi bạn có giá trị bắt đầu, nhưng chưa có dữ liệu cho phần cuối. Sau đó, bạn có thể ngoại suy dựa trên dữ liệu bạn có. Ví dụ: dựa trên các chuyển động trước đó của người chơi, bạn có thể xác định vị trí anh ta sẽ ở trong khung tiếp theo.


2

Luôn luôn nội suy khi bạn có thể.

Khi bạn không có đủ thông tin để nội suy thì bạn cần ngoại suy.

Nó thực sự đơn giản, đừng nghĩ quá nhiều :)

Để giải thích thêm một chút:

Trong nội suy chung là tốt hơn bởi vì nội suy luôn luôn đúng. Để ngoại suy bạn phải đoán. Sau đó, bạn phải đối phó với những gì xảy ra khi bạn đoán sai, điều này dẫn đến dây cao su hoặc popping và tất cả các loại hệ thống để xử lý tất cả những điều đó và ngụy trang nó.

Điều gì xảy ra nếu bạn ngoại suy một vị trí dơi và cho thấy nó đi đúng chỗ và nảy bóng, sau đó nhận ra rằng bạn đã sai và nó không nảy bóng? Không có cách nào tốt để xử lý tình huống đó.


oh ok vậy trong pong, mái chèo của người dùng được dự đoán và bóng và mái chèo khác được nội suy?
J leong

Điều đó hoàn toàn phụ thuộc vào cách bạn thực hiện nó. Xem chỉnh sửa của tôi để biết thêm thông tin.
Tim B

2

Bạn nội suy để tìm các trạng thái giữa các giá trị đã biết và bạn ngoại suy để tìm các trạng thái trong tương lai.

Hãy nghĩ về vấn đề về các biến trạng thái, như vị trí và vận tốc. Trong tất cả các tình huống tốt nhất, mọi máy tính cần làm việc với trạng thái đều có quyền truy cập vào dữ liệu trạng thái trong thời gian chúng muốn làm việc. Ví dụ: thuật toán va chạm để xem liệu súng trường bắn X có bắn vào đầu người chơi A hay không, điều tốt nhất trong tất cả các trường hợp là khi thuật toán biết vị trí chính xác của mọi vật thể tại thời điểm tia laser được bắn.

Trong thế giới thực, chúng ta không phải lúc nào cũng may mắn như vậy. Đôi khi thông tin sự thật chúng tôi nhận được còn thưa thớt hơn. Ví dụ: nếu người chơi A là một người chơi từ xa trên một máy tính khác, bạn có thể không biết chính xác họ sẽ đi đâu khi bạn bắn tia laser và cần tính toán phát bắn. Trong trường hợp này, bạn cần tạo một công cụ ước tính cho vị trí của A, thường là nội suy hoặc ngoại suy.

Sự khác biệt giữa hai là liệu bạn có dữ liệu được giới hạn ở cả hai bên hay chỉ một bên. Giả sử Người chơi A đã công bố vị trí thật của họ cho t = 0 và t = 1. Người chơi B bắn tia laser ở t = 0,5. Trong nhiều trường hợp, thông báo của Người chơi A về vị trí của họ tại t = 1 có thể xảy ra trước khi Người chơi B bóp cò. Tại sao? Trong nhiều trò chơi, khả năng phản hồi của các điều khiển kém hơn hoàn toàn tức thời. Trong một mô phỏng đua xe, phần lớn vị trí của người chơi bị giới hạn bởi vật lý của một phương tiện đang di chuyển. Bạn có thể chọn thông báo "vị trí trong tương lai" bởi vì bạn biết rằng bạn thực sự không thể điều khiển tất cả những điều đó trong một khoảng thời gian ngắn. Nếu bạn có thông tin trong tương lai, bạn có thể nội suy giữa hai giá trị.

Điều gì xảy ra nếu bạn không đủ may mắn để có giá trị = 1? Điều gì sẽ xảy ra nếu Người chơi A không ở vị trí thông báo vị trí trong tương lai của họ và bạn bị mắc kẹt khi quyết định xem bạn đánh hay bỏ lỡ chỉ với thông tin từ t = 0? Trong trường hợp này bạn phải ngoại suy. Trong phép ngoại suy, bạn sử dụng những gì bạn biết về chuyển động để mở rộng ra ngoài bất kỳ dữ liệu nào bạn có. Bạn có thể biết rằng Người chơi A có vận tốc nhất định, vì vậy, giả sử rằng nếu bạn nhân số đó theo thời gian, bạn có thể có được một vị trí mỗi lần.

Sự khác biệt là trong các hành vi. Nội suy đòi hỏi bạn phải có giới hạn trên và dưới, mà bạn không phải lúc nào cũng có. Tuy nhiên, trong gần như tất cả các tình huống, nó có kết quả tốt hơn rất nhiều so với phép ngoại suy. Phép ngoại suy có thể dễ dàng dẫn đến các chuyển động không thực tế. Hãy xem xét trường hợp của một người chơi đang nghiêng sang trái và phải để tránh bị bắn trong khi tiến lên. Tại bất kỳ điểm nào, vận tốc của chúng đều dọc theo một đường chéo, vì vậy nếu bạn ngoại suy, người chơi có thể chạy sang một bên khi thực tế họ không bao giờ làm thế. Nếu bạn chỉ thực hiện phép nội suy, các giá trị có xu hướng không đi lạc bên ngoài các giá trị thực tế.

Nội suy và ngoại suy là hai thái cực trong thế giới lọc. Có rất nhiều rất nhiều nhiều bộ lọc ngoài kia để xử lý dữ liệu như thế này, kết hợp và khớp các thuộc tính giữa phép nội suy và phép ngoại suy. Theo đó, đừng ngạc nhiên nếu bạn thấy các thuật toán không được nội suy rõ ràng hoặc ngoại suy rõ ràng. Hai người đó chỉ là phần nổi của tảng băng.


1

Nội suy đang sử dụng dữ liệu đã biết để tính toán mốc trong giới hạn của tập dữ liệu (xen kẽ là tiền tố 'bên trong'). Phép ngoại suy đang tính toán một mốc thời gian nằm ngoài giới hạn của dữ liệu hiện có (ngoài tiền tố 'bên ngoài'). Cả hai đều được sử dụng để tổng hợp dữ liệu bổ sung, với phương pháp tính toán chính xác xác định độ tin cậy dự kiến ​​của dữ liệu được tạo.

Hoặc để đưa nó vào một sơ đồ rất đơn giản:

A - - - - - B - - - - - C - - - - - D

Cho các điểm dữ liệu ACbạn có thể nội suy Bvà ngoại suy D.


Độ chính xác của phép nội suy hoặc phép ngoại suy hoàn toàn phụ thuộc vào mức độ bạn có thể tính đến mọi biến trong phép tính. Nếu bạn biết tất cả các biến và có một phương trình chiếm tất cả các biến đó, thì bạn có thể nội suy hoặc ngoại suy một cách dễ dàng như nhau.

Đối với cơ chế trò chơi, các yếu tố giới hạn sẽ là các điểm mà tại đó các biến bị ảnh hưởng theo những cách không thể đoán trước, bởi người chơi hoặc một số yếu tố ngẫu nhiên hoặc giả ngẫu nhiên.

Ví dụ, chuyển động của một quả bóng trong Breakout (ở dạng đơn giản nhất) có thể được ngoại suy cho đến khi nó có khả năng tương tác với mái chèo của người chơi. Tất cả các biến có thể được tính đến thời điểm đó và do đó bạn có thể mô hình chính xác các hành động của quả bóng. Khi đạt đến điểm có thể tương tác với người chơi thì sẽ có một số kết quả có thể xảy ra và không có cách nào để mô hình chính xác điều nào sẽ xảy ra cho đến khi nó thực sự xảy ra. Đây là giới hạn dự đoán của mô hình vật lý trò chơi.

Nội suy đơn giản hơn trong các trò chơi vì bạn đang làm việc với các điểm đã biết và không phải tự hỏi liệu các điều kiện sẽ thay đổi. Hơn nữa, bạn có toàn quyền kiểm soát các biến liên quan và có thể sử dụng bất kỳ quy tắc nào bạn xác định để xác định đường dẫn của một đối tượng. Các quy tắc càng phức tạp thì càng khó nội suy.

Đối với chuyển động của vật thể với các va chạm đơn giản trong không gian chơi không trọng lực (như Breakout hoặc Pong), cơ chế nội suy dọc theo một đường trên đường dẫn là phép nội suy tuyến tính đơn giản của các điểm và có thể sử dụng phép tính tương tự để ngoại suy đường thẳng kiểm tra va chạm trong tương lai. Khi phát hiện va chạm, bạn có thể ngoại suy ảnh hưởng của va chạm đó lên các vật thể liên quan.


Đây chính xác là sự khác biệt giữa các từ. Lý do chúng ta có các từ khác nhau để đoán B và D khi tất cả những gì chúng ta có là A và C là vì đoán B chính xác dễ dàng hơn nhiều so với đoán đúng D. Các chuyên gia pháo binh gọi là nội suy backeting. Họ nhận được hai vòng đánh dấu ở hai bên bạn, bạn sẽ chết nếu bạn không di chuyển. Ngoại suy là những gì bạn đang cố gắng làm khi bạn chơi thị trường chứng khoán sau khi nhìn vào biểu đồ giá cổ phiếu. Ngoại suy là khó.
candied_orange 13/03/2016

@CandiedOrange Hệ thống phức tạp ngoại suy là khó, nhưng nội suy cũng vậy. Nó phụ thuộc vào chất lượng của các điểm dữ liệu của bạn và hệ thống có thể dự đoán được như thế nào. Nếu bạn có thể rút ra một phương trình chính xác mô tả hệ thống thì bạn có thể nội suy hoặc ngoại suy với độ chính xác - các đường rất đơn giản để ngoại suy, các đường cong có thể, thị trường chứng khoán không quá nhiều.
Corey

Nói một cách khó khăn, ý tôi là việc nội suy cung cấp cho bạn định lý cơ bản của phép tính để quay trở lại. Ngoại suy không. A và C nói với bạn B là một nơi nào đó khiến C có thể đưa ra A. Yêu cầu D đang yêu cầu dự đoán tương lai. Đối với tất cả các bạn biết C là nơi người chơi chết. Cái nào đáng tin cậy và chấp nhận hơn: Nội suy hay ngoại suy? why-is-extrapolation-
riskier

@CandiedOrange Chắc chắn, phép ngoại suy được giới hạn ở mức độ bạn có thể kiểm soát và dự đoán tất cả các biến có liên quan. Thế là nội suy. Đưa ra hai vị trí mà người chơi đã chiếm giữ trong quá khứ, bạn không nhất thiết phải nội suy chính xác điểm giữa vì người chơi có thể đã thay đổi đường dẫn trực tiếp hoặc tối ưu. Cả hai phương pháp đều có giới hạn.
Corey

Chắc chắn, cả hai đều có giới hạn. Nhưng người ta hủy hoại sự nghiệp thường xuyên hơn người kia. Đoán xem. Yêu cầu của tôi không phải là nội suy là hoàn hảo. Đó là việc nhìn thấy chúng có sức mạnh dự đoán tương tự là nguy hiểm.
candied_orange 14/03/2016

0

Câu trả lời ngắn: bạn nội suy khi bạn phải ước tính một giá trị giữa hai giá trị đã biết (nghĩa là: trong một giờ giá trị là 1, trong 3 giờ là ba, để nội suy giá trị ở 2 tại giá trị 2 có khả năng nhất, với giá trị đã cho các giá trị). Phép ngoại suy là khi ẩn số nằm ngoài những gì bạn biết, vì vậy khi biết 1 và 2, bạn có thể đưa ra phỏng đoán có giáo dục về 3.

Nội suy: ở giữa Extrapolate: bên ngoài

Các câu trả lời dài ở đây rất có thể là chính xác và chính xác hơn về mặt khoa học, nhưng tôi hy vọng lời giải thích đơn giản của tôi có thể có ý nghĩa với một số

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.