Фенотропний дизайн програми


15

Нещодавно я натрапив на ідею, яку висунув Джарон Ланьє, під назвою "фенотропне програмування".

Ідея полягає у використанні «поверхневих» інтерфейсів замість одноточкових інтерфейсів у комп’ютерних програмах, що використовують статистику, щоб визначити незначні помилки, які, як правило, спричиняють катастрофічний збій «класичної» програми.

Опис двох рядків тут:

За словами Джарона, "реальна різниця між поточною ідеєю програмного забезпечення, яка полягає в дотриманні протоколу, і ідеєю [він] обговорює, розпізнавання шаблонів, пов'язана з видами помилок, які ми створюємо", і якщо "ми не будемо "Ми не знайдемо іншого способу мислення та створення програмного забезпечення. Ми не будемо писати програми, що перевищують приблизно 10 мільйонів рядків коду, незалежно від того, наскільки швидкими стають наші процесори".

Трохи довше пояснення тут . І ще довше пояснення тут .

Отже, питання, оглядаючи очевидні конотації роботів-надмірників, які люди, як правило, вибирають, як би насправді створити та написати "фенотропну програму"?


1
Без образи, однак статті, які ви зв'язали, дуже розпливчасті та наївні. Не могли б ви бути більш точними щодо того, що ви розумієте phenotropic program?
Саймон Бергот

Прочитайте все довше. Він описує це в глибоких деталях.
adv

4
Я думаю, що єдиний спосіб відповісти на це - визначити, що таке "фенотропна програма". У такому випадку відповідь стає на основі думки. Тому перш ніж запитати, як написати "фенотропну програму", запитайте, що таке "фенотропна програма".
Ейфорія

1
@Simon: В основному питання задають саме те саме, тому я не знаю, що ваш запит можливий без того, щоб ОП насправді відповів сам на запитання.
Роберт Харві

1
Пов'язана тема (розгляньте автора тексту): mail-archive.com/fonc@vpri.org/msg03808.html
Тіаго Сільва

Відповіді:


23

Ланьє винайшов 50-відсоткове слово, намагаючись викласти мережу навколо певного набору ідей, що описують обчислювальну модель створення комп'ютерних програм, що мають певні ідентифікуючі характеристики.

Слово означає:

Механізм взаємодії компонентів, який використовує розпізнавання образів або штучне пізнання замість виклику функції або передачі повідомлення.

Ідея здебільшого походить з біології. Ваше око взаємодіє зі світом не через функцію, як See(byte[] coneData), а через поверхню, яку називають сітківкою. Це не тривіальна відмінність; комп'ютер повинен сканувати всі байти coneDataодин за одним, тоді як ваш мозок обробляє всі ці входи одночасно.

введіть тут опис зображення

Ланьє стверджує, що останній інтерфейс є більш стійким до несправностей, яким він є (один ковзаючий біт coneDataможе зламати всю систему). Він стверджує, що це дозволяє узгоджувати візерунки та безліч інших можливостей, які, як правило, важкі для комп'ютерів, що це робить.

Найважливішим "фенотропним" механізмом в комп'ютерній системі була б Штучна нейронна мережа (ANN). Він займає "поверхню" як вхідний, а не визначений інтерфейс. Існують і інші методи досягнення певної міри розпізнавання візерунків, але нейронна мережа є найбільш тісно узгодженою з біологією. Зробити ANN дуже просто; змусити його виконати завдання, яке ви хочете надійно виконати, з кількох причин важко:

  1. Як виглядають вхідні та вихідні "поверхні"? Чи стабільні вони, чи змінюються вони за розмірами з часом?
  2. Як правильно зрозуміти структуру мережі?
  3. Як ви тренуєте мережу?
  4. Як ви отримуєте адекватні характеристики продуктивності?

Якщо ви готові розлучитися з біологією, ви можете відмовитися від біологічної моделі (яка намагається моделювати дію фактичних біологічних нейронів) і побудувати мережу, більш тісно пов'язану з фактичними «нейронами» цифрової комп'ютерної системи (логіка ворота). Ці мережі називаються адаптивними логічними мережами (ALN). Спосіб їх роботи полягає у створенні ряду лінійних функцій, які наближають криву. Процес виглядає приблизно так:

введіть тут опис зображення

... де вісь X являє деякий вхід до ALN, а вісь Y являє деякий вихід. Тепер уявіть собі кількість лінійних функцій, що розширюються в міру необхідності для підвищення точності, і уявіть, що процес, що відбувається через n довільних розмірів, повністю реалізований з логічними воротами AND і OR, і ви маєте певне відчуття, як виглядає ALN.

ALN мають певні, дуже цікаві характеристики:

  1. Вони досить легко навчаються,
  2. Вони дуже передбачувані, тобто незначні зміни вхідних даних не призводять до диких коливань у виході,
  3. Вони блискавлять швидко, тому що вони побудовані у формі логічного дерева і діють так само, як двійковий пошук.
  4. Їх внутрішня архітектура розвивається природно в результаті навчального набору

Так фенотропна програма виглядала б приблизно так; вона мала б "поверхню" для введення, передбачувану архітектуру та поведінку, і вона була б толерантною до галасливих входів.

Подальше читання
Вступ до адаптивних логічних мереж із застосуванням для аудиту оцінки ризиків
"Об'єктно-орієнтований" проти "Повідомлення орієнтований", Алан Кей


1
Виправте мене, якщо я помиляюся, але "поверхневий" вхід звучить як колекція - з незалежних (або здебільшого незалежних) компонентів. На прикладі очей це могло виглядати так See(List<Cone> cones)(де кожен Coneнезалежний один від одного), так?
FrustratedWithFormsDesigner

1
@Frustrated Ви, очевидно, можете змоделювати поверхню за допомогою байтового масиву, але поверніться до визначення Ланьє, яке замінює передачу повідомлення та виклик функцій пізнанням та розпізнаванням шаблонів. Це пов'язане з описаною тут проблемою масштабованості . Толерантність до відмов також є частиною рівняння. Подумайте "розумніші інтерфейси".
Роберт Харві

3
Re: "більш віростійкий". Чи бачив Ланьє оптичні ілюзії? Він коли-небудь заглядав у психологію мозку. Мозок ЗАВЖДИ намагатиметься осмислити те, про що говорять його входи, НЕ МАТЕРИ, ЯКІ НЕ БУДУТЬСЯ ЦІ ВИСНОВКИ. Те, як працює мозок, надзвичайно несправний. Таким чином, доки не має значення, чи програма несправно працює, як типова людина, то я вважаю, що модель, про яку йдеться, добре. Однак більшість часу люди очікують, що комп'ютери будуть правильними. Буде важко продати автомобіль, керований комп'ютером, який уникне нещасних випадків більшу частину часу.
Данк

2
@Dunk: ... але все ж законно будувати та продавати автомобілі для водіїв людей, яким вдається уникнути нещасних випадків більшу частину часу.
Док Браун

2
@ Думаю, справа не у тому, щоб помилки - інакше ми б пішли класичним математичним маршрутом, щоб все довести. Суть 1: сфера впливу відмови (Всесвіт не руйнується, якщо я помиляю кролика за горилу - адже я все ще функціоную як людина після цього, як і мій мозок, і так син), 2 : фізичні / біологічні особи в приміщенні повинні відновитись, надати зворотний зв'язок та дослідити альтернативи, які "продовжують дію - навіть неоптимально"; і 3: ідея про те, що ці характеристики змушують нас бажати їх у наших штучних системах
Тіаго Сілва

1

Я думаю, що ми перебуваємо на самому початку одного з кроків, які він зробить, щоб потрапити туди, і це збирання багатьох даних у форматах, які можна проаналізувати. Інтернет, пошук Google, Fitbit (кожен крок, який ви робите, кожен крок, який ви робите, я буду спостерігати за вами.), FourSquare, географічне розташування смарт-телефону, публікації у Facebook та ТАК дані запитань. Ми не там, де поруч із сенсорними даними середній чоловік збирається протягом життя, але ми наближаємось.

Почніть класифікувати мільйони фотографій птахів і отримувати відгуки від людей, які говорять вам, що це не птах, і ви можете почати створювати алгоритм. Звідти може бути створене нечітке враження (я б назвав це моделлю, але це занадто точно для того, що ми намагаємося кодувати.).

class Birdish

Як домашня собака так багато знає про господаря? Тому що він її багато спостерігає. Собака прислухалася до автомобілів, що тягнуться на проїжджу частину, і співвідносивши це з тим, що власник, який відкриває вхідні двері, як видається, як собака, може розпізнати машину за своїм звуком. Ми також могли це зробити, але не бачимо причин брати участь у цьому. І це не так у поточному програмному забезпеченні, воно не звертає уваги на те, що робить користувач. Він просто чекає, коли користувач зробить те, що ІТ розраховує на користувача.

Щось таке просто, як встановлення будильника, можна зробити за допомогою невеликого спостереження / аналізу моїх поточних звичок. Ми відмовилися від налаштування таймерів відеомагнітофона до того, як технологія була замінена цифровою. І чи трапилось би це так швидко, якби ми могли зв’язати телевізійний путівник із відеомагнітофоном? Я дивився один і той же телевізійний показ 4 тижні поспіль одночасно, але 5-го, я навіть телевізор не вмикав. Очевидно, я хочу, щоб це було записано. Хіба ви не можете сказати, що я затримуюсь на роботі, пишучи цей пост, і з моїм типовим маршрутом не повернуться додому? Ви отримали дані, зробіть математику.

Збирайте все більше і більше даних, і тоді ви можете придумати кращі способи їх аналізу, розпізнавання та приховування. Ми виходимо за рамки того, що можна вводити лише з клавіатури з нашими телефонними камерами та незабаром окулярами зі скла. Це лише початок.


1

Ось набір слайдів для визначення ймовірнісної мови програмування у Scala .

Це перший пристойний приклад реалізації деяких основних компонентів системи, який пропонує Джарон Ланьє.


Це виглядає дуже приємно. Можливо, я буду брати участь у розробці бібліотеки для Java, яка робить подібне.
adv

@adv, як би ми його знайшли, якщо ви це зробите?
Нова Олександрія

1
Я опублікую посилання на репортаж github, коли дійду, щоб створити його.
adv

-1

Думка, яку я нещодавно:

Якщо ви використовували ідеї високого рівня, такі як Haskell’s Maybe Monad, щоб передати дзвінки з віддаленою процедурою в інші системи. Ви надсилаєте запит на сервер. Але нічого не повертається (сервер зламаний). Або повертається Обіцянка (сервер зайнятий), і ваші програми продовжують працювати з тими значеннями None або Обіцяними. Це на кшталт того, як Ланір шукає відмовостійкість.

Можливо, є способи інкапсуляції інших можливостей. Наприклад, віддалені дзвінки, які повертаються з наближенням, яке з часом все більше вдосконалюється за допомогою якогось фонового узгодження. тобто. те, що повертається, є чимось на кшталт Обіцянки, але не просто "продовжуйте працювати і працювати з цим, і належне значення незабаром з'явиться", але "продовжуйте працювати і працювати з цим, і краще наближення незабаром з'явиться". (І знову, і знову). Це могло б приховати багато помилок у програміста так само, як мережеві протоколи приховують від програміста багато недоліків у мережі.


як це відповідає на поставлене запитання?
гнат

Якщо я правильно розумію, Фенотропне програмування - це спосіб програмування великих (найчастіше багатокомп'ютерних) надійних систем. Проблема полягає в тому, що всі біологічні метафори роблять його невиразним і важким для перекладу на практичні терміни програмування. Тут я припускаю, що певні програми програмування, які не розпливчасті (наприклад, Монади, Обіцяння тощо), можуть бути способом зробити деякі з цих ідей Ланьє конкретних і практично нерозбірливих.)
interstar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.