“얕게 배우는 딥러닝” 류의 책 한 번 읽고 구글 검색이나 좀 한 사람이 쓰는 글이다. 기술적으로 틀린 내용이 산재할 것이고 오래전 검토됐다 기각됐을 생각을 무의미하게 반복할 것이다. 글쓴이가 몇 년 후 어느 기분 울적한 날에 다시 읽으면서 낯 붉히고 낄낄대는 게 주된 용도다.

보자, 시작은 무슨 얘기가 좋을까나…

네트워크 분야 사람들은 기본적으로 AI를 잘할 수밖에 없다. 뉴럴 네트워크쟎는가.


전문가 시스템(i.e. 프로그램+규칙)과 신경망. 전자는 컴퓨터의 특기고 후자는 사람이 잘 한다. 지금 나와 있는 인공지능 기반 제품/서비스 대부분이 그렇듯 에너지 소모에 신경 쓰지 않아도 될 (가령 인간들의 뒷목에 이상한 거 붙여서 에너지를 뽑아 쓸 수 있게 될) 때까지는 앞으로도 둘을 섞어 쓰게 될 게 분명하다. 그 덕분에 인공 지능이 자연 지능을 더 일찍 능가할 것이고. AI를 만질 때도 둘을 어떻게 조합하고 어떻게 연계할지가 제일 덩어리 큰 고민일 거다.

연산 비용 제약 때문에 층들을 (수직으로, 그리고 수평으로) 마음껏 확장하지 못하는 한 ANN을 다룬다는 건 좀 쪼잔한 작업일 수밖에 없다. 제약이 완화됐을 때 가장 먼저 할 일은 망의 구조와 하이퍼파라미터를 대상으로 유전 알고리즘을 돌리는 것. (그런데 ANN을 선택하는 환경 자체도 측정 방식과 가중치들의 집합이니까 다시 유전 알고리즘의 대상이 되고, 환경을 선택하는 환경 자체도 …)


인공 신경망의 시작은 뉴런과 그 연결 구조를 모사하는 것이었다. 현재 우리가 알고 있는 가장 괜찮은 지능 구현체인 지구 생물의 신경망이란 게 다소의 우연과 경로 의존성의 결과물인 걸 생각하면 (게다가 생명체에서 오차 역전파 같은 게 정확한 형태로 생겨날 수 있을 리 없으니) 다른 원리로 동작하는 신경망이 존재할 가능성은 분명하다. 다만 가능성을 상상하고 모색하는 것과 별개로 자연과 비슷한 걸 만들어 내는 과정을 한 번은 거쳐야 할 거다. 그래봐야 사람과 비슷한 지능을 만드는 게 고작이겠지만, 사람보다 100배 빨리 배우는 데다가 그 결과를 온전하게 유지하고 복제까지 할 수 있는 존재란 건 굉장하다.

Hebb의 학습 규칙 내지 STDP(spike-timing-dependent plasticity). dense 망에선 역전파와 별 차이가 없겠지만 sparse 망에선 더 효율적인 연산이 가능할 것 같다. 그리고 향후 ANN을 저렴한 칩 형태로 만드는 데도 더 잘 맞을 것 같다.

가중치(시냅스 강도)의 값 범위가 클 필요가 있을까? 생체에서는 여러 물리적/생물학적 제약 때문에 시냅스 강도에 상한이 있다. softmax나 Oja의 규칙이 그 제약과 비슷하지만 다르고 가중치 clipping은 보편적인 것 같지 않다. 망 자체가 충분히 복잡하다면 가중치를 가령 부호 있는 8비트 정수로 표현한다거나 해도 충분하지 않을까? 물론 트레이드오프가 있겠지만 말이다.

all-or-nothing 발화 방식과 강한 입력에 짧게 반복 발화하는 걸 대~강 포괄하는 게 실수 값 가중치일 텐데, 그런 동작들을 어떻게 다른 방식으로 (저렴하게) 모사할 수 있을까? 당연히 뉴런의 정확한 모사 자체가 목표일 수는 없겠지만 이건 좀 중요해 보인다.

갓 태어나 초점도 못 맞추는 아기의 눈에 보이는 건 수평 방향으로 놓인 검은 점 두 개다. 그리고 그 가운데 아래에 생겼다 없어졌다 하는 검은 덩어리. 그와 동시에 귀와 코, 피부에서 들어오는 온갖 자극들에 힘입어 그 패턴을 인식하는 작은 망 조각(“모듈”이라고 하려다가 뇌과학 용어와 충돌할 것 같아서…)이 생긴다. 그리고 점점 시력이 좋아지면서 기존 조각들을 기반으로 눈코입을 정밀하게 인식하는 망 덩어리가 생길 테고. 그래서 “저거? 멍멍이~”라고 한두 번만 가르쳐 주면 기존 조각들 몇 개(두 눈, 가운데 아래의 검은 점, 움직임, 털, …)와 “멍멍이” 음성 패턴이 놀고 있던 몇몇 뉴런들과 연결되고 그 중 살아남은 게 멍뭉이를 표상하게 될 거다. 인즉 복잡하고 효율적인 학습이 가능하려면 모듈화가 필요하고, 잘 정의된 기능을 수행하는 망을 패키징 해서 배포할 수 있어야 하고, 그것들을 이래저래 연결해서 쓸 수 있게 돼야 한다.

글자 하나를 골라 집중해서 바라볼 때는 그 문단의 전체적인 모양새가 안 보인다. 시선이 문단 위를 가로로 휙 지나가고 세로로 잠깐 내려갔다 오면서 문단의 크기를 인식하게 된다. 즉 시각 인식에서 중요한 건 작은 범위를 들여다보는 것, 그리고 그 초점 범위를 신경망의 출력에 따라 옮기는 것이다. CNN은 그 중 절반 정도인 셈이다. 물론 큰 범위를 대강 보는 것도 중요하다. 어디에 초점을 맞춰야 할지 알려주니까.

글이나 음성을 잘 이해하는 데 필요한 것 중 하나가 맥락이다. 앞서 나오는 단어들이 관련 맥락을 활성화 하고 그 맥락이 다음에 나오는 모호한 표현의 의미를 확정할 수 있게 해 준다. 그 잠시 유지되는 맥락을 모사해 본 게 RNN일 텐데, 아주 범용적으로 확장하려면 결국 망 안에 세계를 넣어야 하니 먼 일이고, 당장 특화된 작은 분야에 쓰기에는 좋을 것 같다. 게다가 망 안의 고리란 건 의식이 생겨나기 위한 필수 조건이기도 할 테고. 말이 머리 속에서 맴돌면 외부 입력이 사라지고 나서도 학습을 할 수 있게 된다.


설명 가능한 인공지능. 자연/인공 신경망의 출력에 대해 “경험상 그런 거 같다.” 이상의 설명이 가능할까. 직관적으로 떠오른 답에 대한 근거란 건 사후에 만들어 내는 거다. 사람을 생각해 보라. 설명 가능성은 전문가 시스템에게.


AI는 사람의 직업을 대체할까? 당연하다. AI 연구에는 자원이 필요하고, 그 중 돈의 주된 원천은 기업이고, 기업에서 AI를 원하는 건 직원에게 쓰는 돈을 줄이기 위해서다. 그 경로의 길목에는 자본의 욕망 내지 이윤 극대화를 추동하는 동기 체계가 있다.

AI가 프로그래머를 대체할까? AI에게 “양을 그리는 프로그램을 하나 짜 주세요.”라고 할 수 있을까? 사용자가 어떤 입력을 했을 때 어떤 처리 과정을 거쳐 어떤 출력을 내야 하는지, 입력이 유효하지 않을 때 어떡해야 하는지 등을 지시해 줘야 한다. 그리고 그 지시할 내용을 고민해서 결정하고 컴퓨터에게 전달하는 게 프로그래밍의 본질이다. 인공지능이 똑똑해지면 그 전달 과정이 편해지기는 하겠지만 그건 프로그래밍 언어와 도구의 발달을 통해서도 가능하다. 더 시간이 지나면 결국 고민과 결정까지 대신해 주게 되겠지만, 에이, 나 은퇴하기 전에는 아니겠지. 혹시 그렇게 되더라도 상자 그리는 프로그램 짜면 되겠지.


인공지능의 강점 중 하나는 수명이 없다는 거다. 생명체는 단명하고 모든 세대는 매번 빈 서판을 다시 채워야 하기에 (문자와 지식 공유 체계에도 불구하고) 각 개체가 할 수 있는 일에는 뚜렷한 한계가 있다. 한편으로 시작을 반복하는 그 과정은 한 사회가 완벽하게 좋아질 수 없는 제약이기도 하지만 나빠지더라도 결국 회복할 수 있는 가능성이기도 하다. (물론 이건 개체군 층위에서의 얘기고, 사회가 어느 한 방향으로 바뀐다는 건 기본적으로 반대 방향을 추구하거나 저항하는 개체들이 생겨나는 것보다 빠른 속도로 사라진다는 의미다.) 나중에, 긴 수명을 얻게 된 인류는 적응 문제도 알아서 해결할 수 있게 될까?

여담으로, 진화 측면에서 현대 사회는 선택압이 상당히 낮은 편이라 할 수 있다. 그런데 요즘의 낮고 편차가 큰… 번식률을 보면 이전과는 다른 선택압이 꽤 작용하고 있을 것 같다. 지금의 이 인구 집단은 두어 세대 후에 어떻게 달라져 있을까?

AI 통제의 핵심은 번식 경로 통제이다.


2019-01-12:

망 설계 내지 최적화를 사람 대신 컴퓨터에게 맡기려는 시도는 오래전부터 있었고 그게 현실적으로 가능해진 최근 수년 사이에 활발한 시도가 이뤄지고 있다. 라마르크도 가끔씩 등장하고, 재밌다.