표현형 프로그램 디자인


15

저는 최근 Jaron Lanier가 발표 한 "현상 프로그래밍 (phenotropic programming)"이라는 아이디어를 발견했습니다.

이 아이디어는 통계를 활용하는 컴퓨터 프로그램에서 단일 포인트 인터페이스 대신 '표면'인터페이스를 사용하여 일반적으로 "클래식"프로그램이 치명적으로 충돌하는 사소한 오류를 제거하는 것입니다.

두 줄로 된 설명은 다음과 같습니다.

Jaron에 따르면, '프로토콜 준수 인 소프트웨어의 현재 아이디어와 패턴 인식에 대해 논의하는 아이디어의 실제 차이점은 우리가 생성하는 오류의 종류와 관련이 있으며' "소프트웨어에 대해 생각하고 창조하는 다른 방법을 찾지 못한다면, 프로세서 속도에 관계없이 약 1 천만 줄 이상의 코드를 작성하지 않을 것입니다."

약간 더 긴 설명은 여기에 있습니다 . 그리고 더 긴 설명은 여기에 있습니다 .

그래서 사람들이 선택하는 경향이있는 명백한 로봇-군주 의미를 넘어서면서 실제로 어떻게 "음향 프로그램"을 설계하고 작성 하는가?


1
범죄는 없지만 링크 된 기사는 매우 모호하고 순진합니다. 당신이 이해하는 것에 대해 더 정확할 수 phenotropic program있습니까?
Simon Bergot

더 긴 것을 읽으십시오. 그것을 자세히 설명합니다.
adv

4
나는 이것에 대답하는 유일한 방법은 "발현 프로그램"이 무엇인지 정의하는 것이라고 생각한다. 이 경우 답변은 의견 기반이됩니다. 따라서 "음향 프로그램"작성 방법을 요청하기 전에 "음향 프로그램"이 무엇인지 물어보십시오.
Euphoric

1
@Simon : 질문은 기본적으로 똑같은 질문이므로 OP가 실제로 질문에 직접 대답하지 않으면 요청이 가능하다는 것을 알 수 없습니다.
Robert Harvey

1
관련 주제 (텍스트 작성자 고려) : mail-archive.com/fonc@vpri.org/msg03808.html
Thiago Silva

답변:


23

Lanier는 특정 식별 가능한 특성을 갖는 컴퓨터 프로그램을 생성하기위한 계산 모델을 설명하는 특정 아이디어 세트 주위에 그물을 던지려는 시도에서 50 센트의 단어를 발명했습니다.

이 단어는 다음을 의미합니다.

함수 호출 또는 메시지 전달 대신 패턴 인식 또는 인공 인식을 사용하는 구성 요소 상호 작용 메커니즘.

이 아이디어는 주로 생물학에서 나옵니다. 눈은와 같은 기능이 See(byte[] coneData)아니라 망막이라는 표면 을 통해 세상과 인터페이스 합니다. 사소한 구분이 아닙니다. 컴퓨터는 모든 바이트를 coneData하나씩 스캔해야 하지만 뇌는 이러한 모든 입력을 동시에 처리합니다.

여기에 이미지 설명을 입력하십시오

Lanier는 후자의 인터페이스가 더 내결함성이 있다고 주장합니다. coneData 가 전체 시스템을 손상시킬 수있다. 그는 패턴 매칭을 가능하게하며 일반적으로 컴퓨터에서는 어려운 다른 기능들도 가능하다고 주장한다.

컴퓨터 시스템의 전형적인 "음향"메커니즘은 인공 신경망 (ANN)입니다. 정의 된 인터페이스가 아닌 "표면"을 입력으로 사용합니다. 패턴 인식 측정을위한 다른 기술이 있지만 신경망은 생물학과 가장 밀접한 관련이 있습니다. ANN을 만드는 것은 쉽습니다. 여러 가지 이유로 안정적으로 수행하려는 작업을 수행하는 것은 어렵습니다.

  1. 입력 및 출력 "표면"은 어떤 모양입니까? 그들은 안정적입니까, 아니면 시간이 지남에 따라 크기가 다양합니까?
  2. 네트워크 구조를 올바르게 얻으려면 어떻게해야합니까?
  3. 네트워크를 어떻게 훈련 시키나요?
  4. 적절한 성능 특성을 어떻게 얻습니까?

생물학에 참여할 의향이있는 경우 생물학적 모델 (실제 생물학적 뉴런의 작동을 시뮬레이션하려는 시도)을 생략하고 디지털 컴퓨터 시스템의 실제 "뉴런"과보다 밀접한 관련이있는 네트워크를 구축 할 수 있습니다 (논리적 문). 이러한 네트워크를 ALN (Adaptive Logic Networks)이라고합니다. 작동 방식은 곡선에 가까운 일련의 선형 함수를 만드는 것입니다. 프로세스는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

여기서 X 축은 ALN에 대한 일부 입력을 나타내고 Y 축은 일부 출력을 나타냅니다. 이제 정확도를 높이기 위해 필요에 따라 확장되는 선형 함수의 수를 상상하고 AND 및 OR 논리 게이트로 완전히 구현 된 n 개의 임의의 차원에서 발생하는 프로세스를 상상해보십시오. ALN의 모양에 대한 감각이 있습니다.

ALN은 매우 흥미로운 특성을 가지고 있습니다.

  1. 꽤 쉽게 훈련 할 수 있고
  2. 그것들은 매우 예측 가능합니다. 즉, 약간의 입력 변화는 출력에서 ​​거친 스윙을 일으키지 않습니다.
  3. 그것들은 로직 트리 형태로 만들어졌으며 바이너리 검색과 매우 유사하게 작동하기 때문에 번개가 빠릅니다.
  4. 내부 아키텍처는 훈련 세트의 결과로 자연스럽게 진화합니다.

표현형 프로그램은 다음과 같습니다. 입력에 대한 "표면", 예측 가능한 아키텍처 및 동작을 가지며 노이즈 입력에 견딜 수 있습니다.

더 읽어보기 Alan Kay의
위험 평가 "객체 지향"과 "메시지 지향" 을 감사하기위한 응용 프로그램을 갖춘 적응 형 논리 네트워크 소개


1
내가 틀렸다면 수정하되 "표면"입력은 독립적 (또는 대부분 독립적) 구성 요소 모음처럼 들립니다. 눈의 예에서는 다음과 같이 보일 수 있습니다 See(List<Cone> cones)(각각 서로 Cone독립적 임).
FrustratedWithFormsDesigner

1
@Frustrated 분명히 바이트 배열로 표면을 시뮬레이션 할 수 있지만 Lanier의 정의로 돌아가서 메시지 전달 및 함수 호출을 인식 및 패턴 인식으로 대체합니다. 여기에 설명 된 확장 성 문제와 관련이 있습니다 . 내결함성도 방정식의 일부입니다. "스마트 한 인터페이스"를 생각하십시오.
Robert Harvey

3
다시 : "더 내결함성". Lanier는 착시를 본 적이 있습니까? 그는 뇌의 심리를 조사한 적이있다. 두뇌는 입력이 말한 내용을 항상 이해하려고 노력할 것입니다. 어떤 결론을 내렸는지는 중요하지 않습니다. 뇌가 작동하는 방식은 매우 잘못되었습니다. 따라서 일반적인 사람처럼 프로그램이 자주 오작동하는지 여부가 중요하지 않으면 참조되는 모델이 정상이라고 가정합니다. 그러나 대부분의 사람들은 컴퓨터가 정확하기를 기대합니다. 대부분의 사고를 피하는 컴퓨터 구동 자동차를 판매하는 것은 어려울 것입니다.
덩크

2
@ 덩크 (Dunk) : ... 그러나 대부분의 경우 사고를 피하기 위해 인간 운전자를 위해 자동차를 제작하고 판매하는 것은 여전히 ​​합법적입니다.
Doc Brown

2
@ 덩크 요점은 결함의 존재가 아닙니다. 그렇지 않으면 우리는 모든 것을 증명하기 위해 고전적인 수학 경로를 사용할 것입니다. 요점은 1 : 실패의 영향의 범위 (고릴라로 토끼를 착각해도 우주는 부서지지 않습니다. 사실, 여전히 여전히 인간으로 기능하고 뇌와 아들도 마찬가지입니다), 2 : 실물 / 생물학적 실체는 "최적의 방식으로도 일을 계속 유지하는"대안을 회복하고 피드백을 제공하며 대안을 찾아야한다. 그리고 3 : 이러한 특성이 인공 시스템에서 그러한 특성을 원한다고 강요한다는 생각
Thiago Silva

1

나는 우리가 거기에 도달하기 위해 취해야 할 단계 중 하나의 시작 부분에 있다고 생각하며, 분석 가능한 형식으로 많은 데이터를 수집하고 있습니다. 인터넷, Google 검색, Fitbit (모든 단계, 수행 할 때마다 지켜 볼 것입니다.), FourSquare, 스마트 폰 지리적 위치, Facebook 게시물 및 SO 질문 데이터가 모두 수집되고 있습니다. 우리는 평균적인 인간이 평생 동안 컴파일하는 감각 데이터의 양에 가까운 곳은 아니지만, 점점 가까워지고 있습니다.

수백만 마리의 새 그림을 분류하고 사람들이 조류가 아니라고 알려주면서 알고리즘을 만들 수 있다는 피드백을받습니다. 거기에서 fuzzier 인상 (모델이라고 부를 수는 있지만 코딩하려는 것과 너무 정확합니다)을 만들 수 있습니다.

class Birdish

애완견은 주인에 대해 어떻게 그렇게 많이 알고 있습니까? 그것은 그녀를 많이보고 있기 때문에. 개는 차가 차도로 들어오는 것을 들었고 개와 같이 나타나는 앞문을 여는 소유자와 소리를 통해 자동차를 인식 할 수 있다는 것을 들었습니다. 우리도이 일을 할 수는 있지만 참석할 이유가 없습니다. 그리고 이것이 현재 소프트웨어의 문제이며, 사용자의 행동에주의를 기울이지 않습니다. 사용자가 IT에서 기대하는 작업을 수행 할 때까지 기다립니다.

알람 시계를 설정하는 것만 큼 간단한 것은 나의 현재 습관에 대한 약간의 관찰 / 분석에 의해 수행 될 수 있습니다. 우리는 기술이 디지털로 대체되기 전에 VCR 타이머 설정을 포기했습니다. 우리가 VCR과 TV 가이드를 인터페이스 할 수 있다면 얼마나 빨리 일어 났을까요? 나는 같은 TV 쇼를 동시에 4 주 연속으로 봤지만 다섯 번째는 TV를 켜지 않았다. 분명히 나는 ​​그것을 기록하고 싶다. 이 게시물을 작성하는 데 늦게까지 머무르고 있으며 통근 통학으로 시간이 지나도 집에 돌아 오지 않는다고 말할 수 없습니까? 당신은 데이터를 가지고 수학을 수행합니다.

점점 더 많은 데이터를 수집하면 더 나은 분석, 인식 및 보호 방법을 찾을 수 있습니다. 우리는 폰 카메라와 머지 않아 아이 글래스 카메라가 장착 된 키보드로만 입력 할 수있는 것을 넘어서고 있습니다. 시작일뿐입니다.


1

다음은 Scala에서 확률 프로그래밍 언어 를 정의하기위한 슬라이드 세트입니다 .

Jaron Lanier가 제안한 시스템의 일부 핵심 구성 요소에 대한 적절한 구현 예입니다.


이것은 매우 멋져 보인다. 아마도 비슷한 기능을하는 Java 용 라이브러리를 디자인하는 데 도움이 될 것입니다.
adv

@adv 어떻게 하시겠습니까?
새로운 Alexandria

1
github 저장소에 대한 링크를 게시하려고합니다.
adv

-1

내가 최근에 생각한 것 :

Haskell 's Maybe Monad와 같은 고급 아이디어를 사용하여 원격 프로 시저 호출을 다른 시스템으로 래핑했습니다. 서버에 요청을 보냅니다. 그러나 아무것도 돌아 오지 않습니다 (서버가 고장났습니다). 또는 약속이 다시 나타나고 (서버 사용량이 많음) 프로그램이 해당 없음 또는 약속 된 값으로 계속 작업합니다. Lanier가 찾고있는 내결함성과 비슷합니다.

다른 상황을 캡슐화하는 방법이있을 수 있습니다. 예를 들어 근사치로 되돌아 오는 원격 통화는 일종의 백그라운드 협상에 의해 시간이 지남에 따라 점차 개선됩니다. 즉. 다시 돌아 오는 것은 약속과 같은 것이지만 "지속적으로 계속 잡고 있으면 적절한 가치가 곧 올 것"뿐만 아니라 "지속적으로 잡고 계속하면 더 나은 근사치가 곧 올 것"입니다. (그리고 또 다시). 이것은 네트워킹 프로토콜이 프로그래머로부터 낮은 수준의 네트워킹 장애를 숨기는 것처럼 프로그래머에게 많은 결함을 숨길 수 있습니다.


이것은 질문에 어떻게 대답합니까?
gnat

내가 올바르게 이해한다면 표현형 프로그래밍은 대규모 (종종 다중 컴퓨터)의 강력한 시스템을 프로그래밍하는 방법입니다. 문제는 모든 생물학적 은유로 인해 모호하고 실제적인 프로그래밍 용어로 번역하기가 어렵다는 것입니다. 모호하지 않은 특정 프로그래밍 구조 (예 : Monads, Promises 등)가 Lanier의 구체적이고 실질적으로 프로그램 가능한 아이디어를 만드는 방법이 될 수 있음을 제안합니다.
interstar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.