brunch

You can make anything
by writing

C.S.Lewis

by 나는 누군가 Dec 22. 2020

딥러닝

스마트 시대를 앞당길 딥러닝 프레임워크

애플의 2025년 자체 전기 자율주행차 생산계획을 발표한 후 전 세계의 자동차 회사들의 주가가 요동을 치고 있다. 단순히 주가총액으로만 보자면 국내를 대표하는 자동차 대기업 현대차의 50배를 훌쩍 넘는 애플의 행보는 확실히 위협이 될만하다. S&P500에 편입된 테슬라의 주가도 덩달아 출렁거렸을 정도였다. 내연기관차를 생산하기 위해서는 많은 기술이 필요하며 1차, 2차, 3차 등 수많은 협력회사가 필요하다. 내연기관에 들어가는 수많은 부품들을 생산해야 되기 때문이다. 그러나 전기차는 다르다. 전기차에서 가장 우선시되는 기술은 소프트웨어다. 모든 것이 전자적으로만 이루어져서 구동이 되며 말 그대로 차체가 하나의 Smart PC라고 해야 할까. 스마트폰보다 더 많은 메모리가 들어갈 것이고 상시로 네트워크게 연결되면서 딥러닝을 통해 자체적으로 진화할 가능성이 높다. 

이 분야의 출판사로 잘 알려진 한빛미디어에서 밑바닥으로부터 시작하는 딥러닝 3이라는 책을 제공받게 되었다. 이 책을 처음 본 느낌은 딥러닝에 대한 설명 없이 본격적인 실전에 들어간 느낌이었다. 찾아보니 딥터링1에서 기초지식과 처리, 딥러닝 2에서는 Sequence data를 설명해두고 3편에는 본격적인 프레임 워크를 만들기 위한 내용을 담고 있었다. 

어떤 정치인은 초등학교 때부터 코딩 교육을 해야 한다고 하는데 사실 코딩은 소프트 설계에서 중요한 부분은 아니다. 어떤 방식으로 설계하고 어떻게 구현할지에 대한 알고리즘을 모르면 아무리 코딩을 알고 있어도 의미가 없다. 코딩은 AI가 훨씬 더 잘할 수 있다. 미래에는 사람이 코딩할 필요성은 아마 거의 없을 것이다. ㅇ이 책은 파이썬으로 직접 구현하며 배울 수 있도록 이끌고 있다. 이 책을 활용하기 위해서는 객체 지향이라던가 기초이론은 알고 있어야 한다. 

이 책은 총 60단계로 구성이 되었는데 미분 자동계산, 자연스러운 코드, 고차 미분 계산, 신경망 만들기, DeZero의 도전으로 딥러닝 프레임워크들을 이해하는 새로운 관점을 만들어준다. 스마트폰을 살 때는 모두가 같았어도 같은 형태로 사용하는 사람은 아무도 없다. 자동차 역시 겉모습은 똑같지만 딥러닝으로 구현된다면 2030년이 가기 전에 자동차 자체에 프레임워크에 의해 속성을 가지게 될 수 있다. 책의 첫 부분에서는 Variable 클래스를 간단하게 보여주고 있다. 


class Variable:

def_init(self, data):

self.data = data

Variable에 데이터가 보관되는 것처럼 실생활에서 사용되는 모든 것에 개인에 최적화된 정보가 담길 수 있다. 자동차 또한 예외가 아니다. 아마 수학을 좋아하지 않았던 수많은 사람들은 미분이라는 이야기만 나와도 머리가 아플 수 있다. 미분은 정말 수많은 분야에서 활용이 된다. 물체의 시간에 따른 위치 변화율(위치의 미분)은 속도가 된다. 이 책에 나온 대로 따라가기 위해서는 소프트웨어에 대한 사전 지식을 비롯하여 파이썬에 대한 이해, 미분, 적분, 딥러닝을 알 수 있어야 한다. 

파이썬이라는 언어는 프로그래밍 언어의 하나인데 간결하고 생산성이 높은 것이 특징이다. 즉 자동화를 하기에도 장점이 있다. 책에서 소개한 역전파 자동화의 코드만 보아도 단순하다. 


class Function:

def_call_(self, input):

x = input.data

y = self.forward(x)

output = Variable(y)

output.set_creator(self) # 출력 변수에 창조자를 설정한다.

self.input = input

self.output = output # 출력도 저장한다.

reture output


책에는 장의 끝에 칼럼을 담고 있다. 제1고지에서는 수치 미분, 기호 미분, 자동 미분 등을 설명하고 있는데 미분은 지금까지는 필요에 의해서 그때마다 구현했지만 머신러닝에서 자동 미분은 활용될 가능성이 높다고 있다. 

제3고지에서의 고차 미분 코드에 의해 그려지는 그래프를 보면 마치 사람의 뉴런이 생각하는 방식과 유사해 보인다. 2차 미분, 3차 미분, 4차 미분, 5차 미분, 6차 미분, 7차 미분, 8차 미분을 거치면 딥러닝 그 자체를 보여주는 그래프를 볼 수 있다. 신경망에서 매개변수가 100만 개를 넘는 일이 다반사다. 100만 개의 매개변수를 뉴턴 방법으로 갱신한다면 100만*100만 크기의 헤세 행렬이 필요한데 그걸 처리할 큰 메모리는 근미래에 차량과 같은 장비에 장착이 가능하지 않을까.  

범용적인 완전 연결 계층 신경망

import dezero.functions as F

import dezero.layers as L


class MLP(Model):

del _init_(self, fc_output_zizes, activation=F .siqmoid):

super( ),_intit_( )

self .activation - activation

self .layers - [ ]


for i, out_size in enumerrate(fc_output_sizes):

layer = L.Linear(out_size)

setattr(self, '1' +str(i), layer)

self .layers.append(layer)


def forward(self, x):

for 1 in self .layers[:-1]:

x = self .activation(1(x))

return self .layers[-1](x)


이미 자율주행차의 시대가 시작이 되었다. 차량에서 사용하는 배터리의 단가는 어느시점에서 획기적으로 낮아지며 밀고가 고밀도가 되면 딥러닝이 가장 잘 구현되는 공간이 차량이 될 수 있다. 

책에서 제시되는 함수나 코드는 관련 업계에 종사하는 사람들이나 관련 업계로 나가려는 사람들에게는 많은 정보를 담고 있다.  DeZero는 앞으로도 함수와 계층 추가, 메모리 사용 효율 개선, 정적 계산 그래프와  ONNX지원, API문서 등을 제공을 할 것이라고 하니 관심을 가지는 것도 좋다. 하나하나 살펴보면서 이해하고 구현하는 재미가 있는 딥러닝의 세계로 빠져볼 수 있다. 

매거진의 이전글 악의
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari