[우리의 뇌는 어떻게 배우는가] - 1부 배움이란 무엇인가

Uno·2021년 8월 7일
0

Book

목록 보기
4/9
post-thumbnail

* 책 내용을 메모한 것이라 반말이 있으니 양해 부탁드립니다.

Q. 우리는 왜 배우는가?, 대체 왜 진화는 배움과 학습이라는 걸 만들어 냈을까?
A. 그에 대한 대답은 뇌를 미리 완전히 프로그래밍하는 건 가능하지도 않고 바람직하지도 않기 때문이다.

  • p 14 -

→ iOS 프로그래밍에서 protocol(프로토콜) 만 정의한 것이고 그것을 채택하는 것과 같다고 생각됩니다.

마치 아래처럼말이다.

protocol 인간의 생존방법 {
  func 배움과 학습(...) 
  func 습관능력(...)
  func 연계능력(...)
}

class Uno: 인간의 생존방법 {

  func 배움과 학습(주어진상황) { 
     
     if 주어진 상황 {
      상황을 판단한다.
      위험물체를 감지한다.
      먹이를 감지한다.
      위험물체는 회피한다.
      먹이는 찾는다.
    } else {

      상황을 분석한다.
    }
  }

  func 습관능력() { ... }
  func 연계능력() { ... }
}

어떤 인간이든지 인간의 생존방법이라는 틀은 동일하다고 생각합니다. 그리고 그것을 구현하는 방식은 각자 다를 것입니다. 마치 Swift에서 Protocol 처럼 말이죠.

유전자에 최소한의 정보만 저장해야한다면, 저런 프로토콜을 기억하지 않을까 라는 생각을 해봤습니다.


배움이란, 외부 세계의 내부 모델을 만드는 것

  • p 38 -

→ 외부의 세계를 자신의 방식으로 이해하게 된다는 뜻으로 판단됩니다.

배움을 통해 뇌는 이전에 놓친 현실의 일부를 움켜쥐며 그걸 활용해 세계의 새로운 모델을 구축한다.

  • p 40 -

→ "아는 만큼 보인다." 라는 말과 같은 맥락이라고 생각이 되네요.

배움의 7 가지 정의


  1. 배움이란 마음속 모델의 매개변수들을 조정하는 것이다.

    → 그리고 그 매개변수를 조정하는건 "시행착오"를 통해서 "에러"를 조정하는 것이다.

    무의미한 데이터를 배움을 통해서 의미있는 데이터로 변경한다. 배움을 통해서 얻는 것은 내부모델이다.

    배움을 통해 뇌는 이전에 놓친 현실의 일부를 움켜쥐며 그걸 활용해 세계의 새로운 모델을 구축한다.

    • p40 -

    내부모델을 업데이트 하는 법 == 배움

  2. 배움이란 조합 폭발을 활용하는 것이다.

    → 배울 때, 매개변수가 하나라면 조정이 단순해진다. 하나의 매개변수를 넣고 그 결과값만 바라보면 되기 때문이다. 하지만, 매개변수가 더 많아진다면 어떨까? 아마 하나 많아 질 때마다 경우의 수는 기하급수적으로 그 경우의 수가 폭발할 것이다.

  3. 배움이란 에러를 최소화하는 것이다.

    키워드 : 경사하강알고리즘

    → 매개변수에 따른 함수의 출력물이 원하는 것이 나오도록 매개변수를 조절하는 것을 의미한다.

    책에서는 이렇게 말한다. 사냥을 할 때, 조준경으로 조준을 하고 목표물을 쏜다. 그런데 왼쪽으로 빗나갔다면, 오른쪽으로 조금 틀 것이다. 만약 그렇게 해서 오차가 줄어들었다면 점점 오른쪽으로 틀 것이다. 여기서 머리속에는 "경사 하강 알고리즘" 이 동작한 것이다. 혹은 "탄도학 알고리즘" 이 동작한 것이다.

    이 과정을 단순하게 하면 다음과 같다.

    1. 답을 내려고 시도한다.
    2. 어떤 답을 해야 하는지 피드백을 받는다.
    3. 나의 에러를 확인한다.
    4. 에러를 줄이기 위해 매개변수를 조정한다.
    5. 만약 답이 맞다면, 종료하고 아니라면 1 번으로 돌아간다.
  4. 배움이란 가능성들의 공간을 탐구하는 것이다.

    → 예시를 들어보자면, 기존의 학습방법은 어떤 분야에 진입할 때, 주입식으로 매번 개념을 우선적으로 익히는 방식으로만 성공해왔다고 치자.

    그래서 내가 프로그래밍을 배울 때, 주입식으로 접근을 했다. class가 무엇인지, struct가 무엇인지 그리고 객체지향으 무엇인지 하나씩배워나갔다. 하지만 해도해도 프로그래밍을 할 수 없었다. 만약 여기서 지금까지 고수해오던 "주입식 학습 알고리즘" 을 고집한다면, 실력이 늘 수 있을까?

    어느정도는 늘 것이다. 하지만 정확한 답은 얻을 수 없거나 시간이 상당히 더딜 것이다.

    이럴 때, "가능성들의 공간"을 탐구해야한다.

    다른 학습 알고리즘은 없을까?

    와 같은 가능성 말이다.

    그러면 이런 질문이 나올 수 있다.

    다른 학습 알고리즘을 어떻게 찾는데?

    이에 대해 컴퓨터 과학자들은 "무작위성" 을 도입한다. p.54

    여러 알고리즘 중 다른 무작위의 알고리즘을 도입해보거나, 매개변수에 다른 값들을 추가해보는 것이다. 위에 학습 알고리즘을 예시로 들자면,

    매개변수 : 선택한 분야의 개념 입력

    결과물 : 개념을 설명할 수 있다. ( A 는 B 이다. 라는 식으로)

    매개변수 : 선택한 분야의 개념 입력, 개념에 해당하는 구현방법 입력
    결과물 : 개념을 설명할 수 있고, 어떻게 만들지 알게 된다. ( A는 B이고 A는 이렇게 구현한다.)

    혹은

    매개변수 : 개념의 활용 빈출에 최다빈출 순으로 구현방법을 입력

    결과물 : 개념설명은 못한다. 어떻게 만들지 알게되고, 어떤 것이 주로 사용되는지 알게된다.
    ( A가 뭔지는 모른다. A가 얼마나 자주 사용되는지 안다. A를 구현할 줄 안다.)

    책에서는 이 과정을 다윈이 말한 종의 진화에서 영감을 얻기도 한다고 한다.

    "무작위 결합 + 돌연변이 활용" 이다.

    또 다른 방법으로는 금속을 "담금질" 하는 과정에서 영감을 얻기도 했다.

    대장간에서 칼을 만들 때, 담그질을 최초에 할 때는 높은 온도에서 담금질을 하지만 점점 낮은 온도로 여러 차례 가열해서 원자들이 규칙적으로 배열될 가능성을 높인다.

    컴퓨터과학에서 이 상황을 설명하자면, 알고리즘의 성능을 향상시키는 것이다. 즉, 최적화 작업이다.

  5. 배움이란 보상 기능을 최적화하는 것이다.

    인공지능에서는 이것을 "감독되지 않은 학습" 문제라고 말하고 이에 대한 해답은 "강화 학습" 을 고안했다. - P 56, 57 -

    이 학습법은 시스템이 어떻게 해야한다는 건 전혀 알려주지 않는다. 다만 보상을 한다.

    그래서 이 보상을 최대치로 받는 경우를 찾는 것이다.

  6. 배움이란 검색 공간을 제한하는 것이다.

    시스템은 배우는 건 쉽게 하지만, 새로운 상황들로 일반화하는 건 잘하지 못한다. 하지만 일반화하는 능력이야말로 학습의 열쇠이다. - p64 -

    → 매개변수가 오히려 너무 많으면, 일반화하기거 어려워진다. 즉 노이즈(소음)은 최소화해야하고 키 매개변수를 찾아서 학습해야한다.

    → 마치 디버깅할 때, 버그 요소로 판단되는(==매개변수)가 너무 많으면, 무엇 때문에 버그가 생겼는지 규명하기가 상당히 어려워 진다.

  7. 배움이란 선험적 가설을 투영하는 것이다.

    배운다는 것은 제거해 나가는 것이다. - 장 피에르 샹구 <<뉴런 맨>> -

    • p69 -
profile
iOS & Flutter

0개의 댓글