Thiết kế chương trình phenotropic


15

Gần đây tôi đã chạy qua một ý tưởng được đưa ra bởi Jaron Lanier gọi là "lập trình phenotropic".

Ý tưởng là sử dụng các giao diện 'bề mặt' thay vì giao diện một điểm trong các chương trình máy tính sử dụng số liệu thống kê để khắc phục các lỗi nhỏ thường khiến chương trình "cổ điển" gặp sự cố nghiêm trọng.

Mô tả hai dòng ở đây:

Theo Jaron, 'sự khác biệt thực sự giữa ý tưởng hiện tại về phần mềm, đó là tuân thủ giao thức và ý tưởng [anh ấy] đang thảo luận, nhận dạng mẫu, có liên quan đến các loại lỗi chúng tôi tạo ra' và nếu 'chúng tôi không 'Không tìm thấy một cách suy nghĩ và tạo ra phần mềm khác, chúng tôi sẽ không viết các chương trình lớn hơn khoảng 10 triệu dòng mã cho dù bộ xử lý của chúng tôi có trở nên nhanh như thế nào.'

Giải thích dài hơn một chút là ở đây . Và lời giải thích thậm chí dài hơn là ở đây .

Vì vậy, câu hỏi, nhìn qua các ý nghĩa rõ ràng về robot-lớp phủ mà mọi người có xu hướng chọn ra, làm thế nào một người thực sự sẽ thiết kế và viết một "chương trình phenotropic?"


1
Không xúc phạm nhưng những bài viết bạn liên kết rất mơ hồ & ngây thơ. Bạn có thể chính xác hơn về những gì bạn hiểu bằng cách phenotropic program?
Simon Bergot

Đọc qua cái dài hơn bao giờ hết. Nó mô tả nó một cách chi tiết.
ADV

4
Tôi nghĩ cách duy nhất để trả lời điều này là định nghĩa "chương trình phenotropic" là gì. Trong trường hợp đó, câu trả lời trở thành dựa trên ý kiến. Vì vậy, trước khi hỏi làm thế nào để viết một "chương trình phenotropic", hãy hỏi "chương trình phenotropic" là gì.
Euphoric

1
@Simon: Câu hỏi về cơ bản là hỏi cùng một điều, vì vậy tôi không biết rằng yêu cầu của bạn là có thể mà không cần OP thực sự tự trả lời câu hỏi.
Robert Harvey

1
Chủ đề liên quan (xem xét tác giả của văn bản): mail-archive.com/fonc@vpri.org/msg03808.html
Thiago Silva

Câu trả lời:


23

Lanier đã phát minh ra một từ 50 xu trong nỗ lực tạo ra một mạng lưới xung quanh một tập hợp ý tưởng cụ thể mô tả một mô hình tính toán để tạo ra các chương trình máy tính có một số đặc điểm nhận dạng nhất định.

Từ có nghĩa là:

Một cơ chế cho sự tương tác thành phần sử dụng nhận dạng mẫu hoặc nhận thức nhân tạo thay cho việc gọi hàm hoặc truyền thông điệp.

Ý tưởng chủ yếu đến từ sinh học. Mắt của bạn giao tiếp với thế giới, không phải thông qua một chức năng như See(byte[] coneData), mà thông qua một bề mặt gọi là võng mạc. Đó không phải là một sự phân biệt tầm thường; một máy tính phải quét từng byte coneDatamột, trong khi não của bạn xử lý đồng thời tất cả các đầu vào đó.

nhập mô tả hình ảnh ở đây

Lanier tuyên bố rằng giao diện sau có khả năng chịu lỗi cao hơn (một bit bị trượt trong coneDatacó thể phá vỡ toàn bộ hệ thống). Ông tuyên bố rằng nó cho phép khớp mẫu và một loạt các khả năng khác thường gây khó khăn cho máy tính.

Cơ chế "phenotropic" tinh túy trong một hệ thống máy tính sẽ là Mạng nơ ron nhân tạo (ANN). Nó lấy một "bề mặt" làm đầu vào, thay vì Giao diện được xác định. Có các kỹ thuật khác để đạt được một số biện pháp nhận dạng mẫu, nhưng mạng lưới thần kinh là một trong những liên kết chặt chẽ nhất với sinh học. Làm ANN thật dễ dàng; khiến nó thực hiện nhiệm vụ mà bạn muốn nó thực hiện một cách đáng tin cậy là rất khó, vì một số lý do:

  1. "Bề mặt" đầu vào và đầu ra trông như thế nào? Chúng có ổn định không, hay chúng có kích thước khác nhau theo thời gian?
  2. Làm thế nào để bạn có được cấu trúc mạng phải không?
  3. Làm thế nào để bạn đào tạo mạng?
  4. Làm thế nào để bạn có được đặc điểm hiệu suất đầy đủ?

Nếu bạn sẵn sàng tham gia sinh học, bạn có thể phân phối với mô hình sinh học (cố gắng mô phỏng hoạt động của các nơ-ron sinh học thực tế) và xây dựng một mạng lưới liên kết chặt chẽ hơn với các "nơ-ron" thực tế của hệ thống máy tính kỹ thuật số (logic cổng). Các mạng này được gọi là Mạng logic thích ứng (ALN). Cách họ làm việc là bằng cách tạo ra một loạt các hàm tuyến tính gần đúng một đường cong. Quá trình này trông giống như thế này:

nhập mô tả hình ảnh ở đây

... Trong đó trục X đại diện cho một số đầu vào cho ALN và trục Y đại diện cho một số đầu ra. Bây giờ hãy tưởng tượng số lượng các hàm tuyến tính mở rộng khi cần thiết để cải thiện độ chính xác và tưởng tượng rằng quá trình xảy ra trên n kích thước tùy ý, được thực hiện hoàn toàn với các cổng logic AND và OR và bạn có cảm giác về ALN trông như thế nào.

ALN có những đặc điểm nhất định, rất thú vị:

  1. Họ khá dễ dàng để đào tạo,
  2. Chúng rất dễ đoán, tức là những thay đổi nhỏ trong đầu vào không tạo ra sự dao động mạnh trong đầu ra,
  3. Chúng nhanh như chớp, vì chúng được xây dựng theo hình dạng của cây logic và hoạt động giống như tìm kiếm nhị phân.
  4. Kiến trúc bên trong của họ phát triển tự nhiên là kết quả của tập huấn luyện

Vì vậy, một chương trình phenotropic sẽ trông giống như thế này; nó sẽ có một "bề mặt" cho đầu vào, một kiến ​​trúc và hành vi có thể dự đoán được và nó sẽ chịu được các đầu vào ồn ào.

Đọc thêm
Giới thiệu về Mạng logic thích ứng với ứng dụng Đánh giá rủi ro kiểm toán
"Hướng đối tượng" so với "Định hướng thông điệp" của Alan Kay


1
Chỉnh sửa cho tôi nếu tôi sai, nhưng đầu vào "bề mặt" nghe giống như một bộ sưu tập - gồm các thành phần độc lập (hoặc chủ yếu là độc lập). Trong ví dụ về mắt, nó có thể trông như thế này See(List<Cone> cones)(trong đó mỗi cái Coneđộc lập với nhau), đúng không?
Thất vọngWithFormsDesigner

1
@Frustrated Bạn rõ ràng có thể mô phỏng một bề mặt với một mảng byte, nhưng quay lại định nghĩa của Lanier, thay thế việc truyền thông điệp và gọi hàm bằng nhận thức và nhận dạng mẫu. Nó liên quan đến vấn đề khả năng mở rộng được mô tả ở đây . Dung sai lỗi cũng là một phần của phương trình. Hãy suy nghĩ "Giao diện thông minh hơn."
Robert Harvey

3
Re: "nhiều lỗi hơn". Lanier đã bao giờ nhìn thấy ảo ảnh quang học chưa? Có bao giờ anh nhìn vào tâm lý của bộ não. Bộ não LUÔN LUÔN cố gắng hiểu ý nghĩa của những gì đầu vào đang nói với nó, KHÔNG CÓ VẤN ĐỀ NÀO SAU ĐÓ KẾT LUẬN. Cách thức hoạt động của bộ não là vô cùng lỗi lầm. Do đó, miễn là không có vấn đề gì nếu chương trình gặp trục trặc khá thường xuyên, giống như một người bình thường, thì tôi cho rằng mô hình được nhắc đến là ổn. Tuy nhiên, hầu hết thời gian mọi người mong đợi máy tính là chính xác. Sẽ khó để bán một chiếc xe điều khiển máy tính mà tránh tai nạn hầu hết thời gian.
Dunk

2
@Dunk: ... nhưng vẫn hợp pháp khi chế tạo và bán xe cho người lái xe để tránh tai nạn trong hầu hết thời gian.
Doc Brown

2
@Dunk điểm không phải là sự hiện diện của lỗi - nếu không chúng ta sẽ đi theo con đường toán học cổ điển để chứng minh mọi thứ. Vấn đề là 1: phạm vi của tác động thất bại (vũ trụ không sụp đổ nếu tôi nhầm một con thỏ với một con khỉ đột - thực tế, tôi vẫn hoạt động như một con người sau đó, bộ não của tôi và con trai cũng vậy), 2 : các thực thể vật lý / sinh học trong phòng phải phục hồi, cung cấp thông tin phản hồi và thăm dò thay thế "giữ cho mọi thứ diễn ra - ngay cả trong một cách không tối ưu"; và 3: ý tưởng rằng những đặc điểm đó hấp dẫn chúng tôi muốn chúng trong hệ thống nhân tạo của chúng tôi
Thiago Silva

1

Tôi nghĩ rằng chúng ta đang ở giai đoạn đầu của một trong những bước cần thiết để đạt được điều đó và đó là thu thập rất nhiều dữ liệu ở các định dạng có thể được phân tích. Internet, tìm kiếm Google, Fitbit (Mỗi bước bạn thực hiện, mọi di chuyển bạn thực hiện, tôi sẽ theo dõi bạn.), FourSapes, một vị trí địa lý điện thoại thông minh, bài đăng trên Facebook và dữ liệu câu hỏi SO đều được thu thập. Chúng ta không ở đâu gần số lượng dữ liệu cảm giác mà một người bình thường đang biên soạn trong suốt cuộc đời, nhưng chúng ta đang tiến gần đến.

Bắt đầu phân loại hàng triệu bức ảnh về các loài chim và nhận phản hồi từ những người nói với bạn rằng đó không phải là một con chim và bạn có thể bắt đầu tạo ra một thuật toán. Từ đó, một ấn tượng mờ hơn (tôi sẽ gọi nó là một mô hình, nhưng điều đó quá chính xác cho những gì chúng tôi đang cố gắng viết mã.) Có thể được tạo ra.

class Birdish

Làm thế nào để một con chó cưng biết rất nhiều về chủ? Vì nó theo dõi cô rất nhiều. Con chó đã lắng nghe những chiếc xe kéo vào đường lái xe và tương quan rằng với chủ sở hữu mở cửa trước mà nó xuất hiện như con chó có thể nhận ra một chiếc xe bằng âm thanh của nó. Chúng tôi cũng có thể làm điều này, nhưng chúng tôi thấy không có lý do gì để tham gia vào việc này. Và đó là những gì sai với phần mềm hiện tại, nó không chú ý đến những gì người dùng đang làm. Nó chỉ chờ người dùng làm những gì CNTT mong muốn người dùng làm.

Một cái gì đó đơn giản như đặt đồng hồ báo thức có thể được thực hiện bằng cách quan sát / phân tích một chút về thói quen hiện tại của tôi. Chúng tôi đã từ bỏ việc thiết lập bộ hẹn giờ VCR trước khi công nghệ được thay thế bằng kỹ thuật số. Và điều đó có xảy ra nhanh như vậy không nếu chúng ta có thể giao tiếp với Hướng dẫn truyền hình với VCR? Tôi đã xem cùng một chương trình truyền hình 4 tuần liên tiếp cùng một lúc, nhưng lần thứ 5 tôi thậm chí không bật TV. Rõ ràng tôi muốn nó được ghi lại. Bạn có thể nói rằng tôi thức khuya làm việc để viết bài này và với việc đi lại điển hình của tôi sẽ không khiến nó trở về nhà kịp không? Bạn đã có dữ liệu, làm toán.

Thu thập ngày càng nhiều dữ liệu và sau đó bạn có thể đưa ra những cách tốt hơn để phân tích, nhận biết và thay đổi nó. Chúng tôi đang vượt xa những gì chỉ có thể được nhập từ bàn phím với máy ảnh điện thoại của chúng tôi và máy ảnh kính mắt sớm. Nó chỉ là sự khởi đầu.


1

Dưới đây là một bộ slide để xác định Ngôn ngữ lập trình xác suất trong Scala .

Đây là ví dụ triển khai tốt đầu tiên cho một số thành phần cốt lõi của hệ thống mà Jaron Lanier đề xuất.


Điều này trông rất đẹp. Có lẽ tôi sẽ cố gắng thiết kế một thư viện cho Java tương tự như vậy.
ADV

@adv làm thế nào chúng ta sẽ tìm thấy nó, nếu bạn làm?
New Alexandria

1
Tôi sẽ đăng một liên kết đến một repo github khi tôi đi xung quanh để tạo ra nó.
ADV

-1

Một suy nghĩ tôi đã có gần đây:

Nếu bạn đã sử dụng các ý tưởng cấp cao như Có thể là Monad của Haskell để thực hiện các cuộc gọi thủ tục từ xa đến các hệ thống khác. Bạn gửi yêu cầu đến máy chủ. Nhưng không có gì trở lại (máy chủ bị hỏng). Hoặc một Promise quay trở lại (máy chủ đang bận) và các chương trình của bạn tiếp tục hoạt động với các giá trị Không hoặc Hứa hẹn đó. Điều đó giống như khả năng chịu lỗi mà Lanier đang tìm kiếm.

Có thể có những cách gói gọn các tình huống khác. Ví dụ, các cuộc gọi từ xa trở lại với một xấp xỉ đang ngày càng được cải tiến theo thời gian bởi một số loại đàm phán nền. I E. những gì trở lại là một cái gì đó giống như một Lời hứa nhưng không chỉ là "tiếp tục và làm việc với điều này và một giá trị phù hợp sẽ sớm xuất hiện" mà là "tiếp tục và làm việc với điều này và một xấp xỉ tốt hơn sẽ sớm xuất hiện". (Và một lần nữa, và một lần nữa). Điều này sẽ có thể che giấu rất nhiều lỗi từ lập trình viên, giống như các giao thức mạng ẩn rất nhiều lỗi mạng cấp thấp từ lập trình viên.


Làm thế nào để trả lời câu hỏi này?
gnat

Nếu tôi hiểu chính xác, Lập trình Phenotropic là một cách để lập trình các hệ thống lớn (thường là đa máy tính). Vấn đề là, tất cả các ẩn dụ sinh học làm cho nó mơ hồ và khó dịch thành các thuật ngữ lập trình thực tế. Ở đây tôi đang đề xuất rằng các cấu trúc lập trình nhất định không mơ hồ (ví dụ: Monads, Promise, v.v.) có thể là một cách để thực hiện một số ý tưởng về Lanier cụ thể và có thể thực hiện được.)
interstar
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.