인공지능 공부해보겠다고 설레발치기 시작한 것이 어언 2년여가 다되간다.

그간 나름 책도 좀 보고 동영상 강좌도 좀 보고...페이퍼나 논문은 하나도 안보고...ㅠ.ㅠ


그간 읽은 책들과 읽는 중인 책 그리고 읽기 위해 사놓은 책을 좀 정리해보면


읽은 책

텐서플로우 첫걸음
골빈해커의3분 딥러닝
머신러닝 워크북
밑바닥부터 시작하는 딥러닝

읽는 중인 책

핸즈 온 머신러닝
머신러닝 탐구생활


읽다가 보류한 책

강화학습 첫걸음
기초 수학으로 이해하는 머신러닝 알고리즘
처음 배우는 딥러닝 수학
프로그래머를 위한 선형대수


사놓기만 한 책

머신러닝 실무 프로젝트
딥러닝의 정석
러닝 텐서플로우
머신러닝 딥러닝 실전 개발 입문




하지만 공부를 해 가면 해 갈수록 궁금한 것은 더 많아지고 이제는 과연 내가 뭔가를 이해 하고는 있는 건가 하는 생각에

자괴감이 들기 시작했다. 똑같은 내용을 공부하고 있는데 볼수록 새로운 느낌?


결국 자괴감을 이기지 못하고 처음부터 다시 시작하는 길을 선택했다. 처음 시작부터 이해하지 못하고 넘어간 부분들을

차근차근 정리하고, 이해하고 넘어가야 할 것 같아서...(그런 의미에서 현재 읽고있는 2권의 책은 꽤 도움이 되는 것 같다)


특히나 전반적으로 내용을 이해하지 못하게 하는 주된 이유 중 하나가 어려운 용어들과 복잡한 공식들이기도 하고 

머신러닝의 기초가 되는 선형 회귀 등을 제대로 이해하지 않고 겁대가리 없이 덥썩 딥러닝으로 직행한 무모함도 충분히 

일조를 했기에 다시 처음부터 하나 하나를 정리하는 것으로부터 시작하기로 했다. 그리고 


패배적인 자기 만족일지는 모르겠으나 어차피 이 공부는 내가 이 분야의 전문가가 되기 위한 것이라기 보다는 나의 지적 만족을

위한 것이니 쉬엄쉬엄 간들 어떠랴 싶다. 태공망 여상은 나이 80에 주문왕을 만나 그 재능을 펼치기 시작했다는데 그렇다면

나에게는 아직 30년이란 시간이 남은 것 아닌가(뜻밖의 나이 공개가...ㅠ.ㅠ)


느려도 황소 걸음이랬으니 차분하게 한걸음 한걸음 가보자.

그 시작은 정규 방정식이다.


정규방정식

사실 그동안 비용함수를 최소화 하는 가중치를 찾기 위한 방법으로 경사하강법만을 알고 있었는데 이번에 핸즈 온 머신러닝을

읽으면서 처음 정규방정식이란 것이 있다는 것을 알게 되었다.


문제는 이 정규방적이라는 것이 행렬식으로 표현이 되어있어 문돌이의 사고방식으로는 이 것이 어떻게 경사하강법과 동일한

기능을 하게 되는지 이해가 가지 않는 것이었다. 그래서 새로운 시작의 첫 출발을 단순 선형회귀의 비용함수로부터 정규방정식을

도출하는 과정을 정리해보고자 한다.



선형 회귀 비용함수로부터 정규방정식 도출하기


복습

선형회귀의 가설함수 식에서 편향을 제거하자. 방법은 그냥 b = 0으로 초기화 하는 것이다.




    •비용함수도 다시 한 번 확인하자.



















사전 확인1 - ∑를 행렬로



∑ 로 표현되는 제곱의 합은 그 수들을 요소로 하는행렬과그 행렬의 전치행렬의 곱과 같다(복잡하니
1
행짜리 행렬로 확인해보자).




















사전 확인2전치행렬의 성질


     •전치행렬은 다음과 같은 성질이 있다.




























우선 cost함수는 W에 대한 함수이므로 함수 표기를 바꿔보자(함수명MSE는 최소제곱법의 영문 표기인 Mean Square Error의 약어이다).

이제 명확하게 이 함수는 x와 y에 대한 함수가 아니라 W에 대한 함수로 보일 것이다.









함수는W에 대한 함수인데 정작 함수 식에는 W가 안보이니 내부 함수도 원래대로 치환하자.






















사전 확인한 내용을 상기하면서 번 식으로 변환해보자
전치행렬의 성질에 따라 번 식으로 전개할 수 있다.
W를 포함한 식들을 다시 정리하면 번 식이 된다.
다시 한 번 전치행렬의 성질에 따라 식을 전개하면 번 식이 된다.
이 변형은 최초의 시그마 식을 전개해서 진행해도 동일한 결과가 나온다.






최종 정리된 식은 과 같고 이제 이 값을 미분하여비용함수가 최솟값을 갖는 W를 찾을 것이다.

비용함수가 최솟값을 갖기 위해서는 비용함수를 미분한 값이 0이 되어야 한다.
미분 과정을 명확하게 하기 위해 식을 한 번 정리해 주자(식 ).주의할 것은 W에 대해 미분한다는 점이다.
행렬 A에 대해 자신과 자신의 전치행렬과의 곱은제곱과 같다고 했다.그리고 전치행렬의 성질에 따라W와 X의 곱의 전치행렬은 X의 전치행렬과 W의 전치행렬의 곱과 같다(W와 X의 순서가 바뀜에 주의).




이제 거의 다 왔다.
미분한 함수는 식 와 같고 이제 
거추장스러운1/m도 없앨 수 
있다(사실 진작에 1/m을 없애고
보다 깔끔하게 식을 전개할 수도 
있었으나 나같은문돌이는 갑자기 
저런거 하나 없어져도 극도의
멘붕에 시달릴 수 있기에 끝까지 
가져왔다-.-).










최종 미분식을 W에 대해 정리해보자.
    •이렇게 해서 단순 선형 회귀의 비용함수로부터 정규방정식을 도출해보았다.













선형 회귀 비용함수로부터 정규방정식 도출하기2



정규방정식은 다른 형태로도 
도출할 수 있다우선 최초의 
식을 전개해보자.














이후 전개한 식을 W에 대해 미분한다.














최종 정리한 후 시그마를 
행렬로 변환해보자














하지만 아직 이해하지 못한 것이 하나 있다.
가설함수에서 편향을 제거하지않고 WX + b의 형태로 이 과정을 진행하게 되면 최종 정규방정식은 좌측과 같이 나온다.이 것이 앞서 도출해본 정규방정식과 동일한 식이란 것을 문돌이의 두뇌로는 이해하기 힘들다.ㅠ (분모와 분자 각각 - 뒤에 붙어있는 값들은 대체 어쩔...ㅠ.ㅠ)






일단 정규방정식은 좌측의 식으로 

알아두자

정규방정식은 행렬식으로 경사
하강법에 비해 많은 연산량이 필요
하지도 않고 학습률 설정 등
골치아픈 하이퍼파라미터의 
설정을 신경쓰지 않아도 된다.
하지만 행렬 연산이다보니 특성의 
수가 늘어나면 계산속도가 많이 
느려지게 된다.다만 샘플 수에 
대해서는 선형적으로 비례한다고 
한다.
또한 정규방정식으로 학습된 선형 
모델은 예측이 매우 빠르다고 한다
(핸즈 온 머신러닝)



정리


이렇게 해서 새롭게 시작하는 인공지능 학습의 첫 단추를 꿰었다. 하지만 이렇게 차근차근 분석을 하면서도 여전히

어떤 부분에 대해서는 완전하게 이해하지 못한 채 그저 직관적인 이해로 두루뭉술하게 넘어가고 있는 상황이다.

사실 이러한 상태가 가장 환장하는 상태이다. 전체적인 흐름은 대충 이해가 가는데 어떤 디테일한 부분에서

뭔가 막혀있는 듯한 느낌...



첫 대상인 정규방정식도 정리를 하고 보니 아직은 부족한 상태라는 것을 알게 되었다.

이러한 과정이 큰 도움이 되는 것 같다.


아무튼 이번에는 용어 하나, 공식 하나도 집중해서 보면서 차근차근 진행을 해나가 보자. 

머신러닝 reboot는 이제 시작이다!




블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^


본방 사수는 못하고 최근에 케이블에서 미스터 선샤인을 몰아보게 되었다.

나는 이렇게 가끔씩 온 가족이 함께 모여 하루에 한두편 지나간 드라마를 함께 보곤 한다.

대장금, 허준, 응팔, 뿌리깊은 나무, 도깨비, 그리고 이번에 미스터 선샤인...(그동안 꽤 많이도 봤네...)


나는 가끔 이렇게 큰 이슈가 되는 드라마나 영화를 볼 때는 스포일러에 상관없이 평가를 먼저 본다.

뭔가 문제가 되는 부분이 있다면 적어도 그 것을 의식하고는 봐야 하지 않을까 하는 생각에서다.

특히나 미스터 선샤인은 우리 민족에게 있어 역사적으로 중요한 시대를 배경으로할 뿐만 아니라

그 시대의 영향이 현대에도 미치고 있기에 그냥 재밌게만 볼 수는 없었다.


아니나 다를까 찾아본 평가들 중 이 드라마의 역사 왜곡에 대해 비판적인 글들이 꽤 많았다.

중요한 대목을 들어보면 친일파의 나타난 시점의 오류와 드라마 전반에서 일본의 침략성보다는

조선인이 자발적으로 일본을 불러들인 듯한 전개 왜곡된 부분으로 지적되었고 특히나 이러한

내용들이 이미 역사를 잘 이해하고 있는 대한민국 성인인 경우에는 크게 문제되지 않겠지만

아직 역사를 잘 모르는 어린 아이나 Netflix라는 서비스를 통해 전세계 국가에 방영된다는 점을

놓고 보면 그냥 가볍게 넘길만한 일은 아닐 것이다.


결국 황당한 일이 일어났으니...

몇화에선가...구동매가 잡았다가 놓아준 의병으로부터 총에 맞았다.

그런데 우리 가족 모두는 구동매를 불쌍하다고 하면서 의병 나쁜 놈이라는 말까지 내뱉었다.

그 의병이 개인적인 이익을 위해 그러한 것이 아님에도 우리 가족에게 그 의병은 졸지에 나쁜놈이

되어버린 것이다 (백번을 용서해 구동매를 김동인의 붉은 산에 나오는 삵과도 비교해볼 수 

있겠으나 역시 그건 아닌 것 같다...-.-).


하물며 역사적 인식이 희박한 사람이거나 외국인이 이 드라마를 본다면 어떤 생각을 갖게 될지...


물론 조선이 잘못한 것도 많다. 하지만 분명 일본인 대한제국을 침탈한 원흉이고 대한제국의 

지위고하를 막론하고 모든 민족의 적이었던 것이다. 일본보다 자기 민족을 배반한 변절자를 더

미워하게 되는 상황은 일제시대에 이미 일본이 써먹었던 방법 아닌가...(물론 반민족행위자를

용서해주자는 말은 아니다).


암튼 재미는 있었지만 그저 재밌게만 볼 수 있는 드라마는 아니었다.


블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^


사실 이미 드로잉 태블릿을 사면서 절반, 아니 그 이상을 아이들 장난감으로 쓰일 것을 예상하고 있었다. 그래서 심지어는 상당한 비용을 더 주고 펜을 하나 더 추가로 구매했지 않은가 (펜을 동시에 2개 이상 인식하지 못한다는 것은 함정....-.-)


아무튼 예상은 비껴나가지 않았고 내가 연습 좀 할라 치면 여지없이 아이들이 주변으로 모여들면서 한마디..."나도 할래!"


사실 아직 드로잉 태블릿은 익숙해지지 않고 대부분의 연습은 아이패드 6세대에 애플 펜슬로 하고 있어 그리 아쉬울 것은 없을 뿐더러 오히려 태블릿을 구매하기 전에 내가 아이패드와 애플 펜슬로 그림 연습을 하고 있으면 아이들의 관심에 아이패드와 애플 펜슬을 점령당할 것 같은 느낌적인 느낌에 드로잉 태블릿을 구매했다는 것이 나의 빅픽쳐라면 빅픽쳐일까...^^;;;


그래도 아직은 평화롭게 잘 나눠 쓰고 있다~

블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^


도전! Scratch Building!


얼마전 포스팅에서 Scratch building을 언급한 바가 있다. (http://mazdah.tistory.com/823)
간단히 정리하면 버려지는 잡다한 물건들을 이용하여 축소 모형(Scale model)을 만드는 작업을 일컫는 말이다.


기존에 진행하던 2족 보행 로봇 작업이 생각보다 시간이 길어지다보니 슬금슬금 관심이 다른 곳으로 쏠리고
결국은 일을 내고 말았다. 뜬금없이 잠깐 쉬는 셈 치고 잡동사니 모아다가 로봇 하나 만들어보고 다시 2족 보행 로봇 
작업 진행하자고 생각한 것이다.


그리고 마침 그 때 일하는 사무실이 이사를 했는데 이사간 자리의 전 주인이 놓고 간 TLR(이안리플렉스 카메라)
형태의 연필깎이와 오래된 공유기의 안테나가 눈에 띈 것이다.


아무 생각 없이 주섬주섬 싸들고 집에 돌아와 작업을 시작했다.


천 리 길도 한 걸음부터 그리고 과유불급


첫 날은 기대에 부풀었다. 머릿속에 떠오르는 대로 각종 필요한 재로들을 벌여놓고 작업 준비를 하였다.
사실 연필깎이의 색깔과 형태가 얼핏 일제시대의 일본 순사를 떠올리게 하여 만세 운동을 진압하는 일본 순사 로봇을
디오라마로 만들까 생각도 해보았으나 현재의 내 실력으로는 언감생심 꿈도 못꿀 일이고 왠지 그렇게 만들어 놓으면
디오라마의 설정보다 일본 순사 로봇이 더 주목받을 것 같아 찜찜하기도 하였다.


준비이것 저것 많이도 준비했으나...


결국 평소의 내 스타일대로 그냥 만들어 가면서 그때그때 다음 계획을 잡아가기로 했다…-.-
최초의 계획은 유튜브 동영상에 많이 보이는 것 처럼 styrene 재질의 재료를 이용하여 몸통과 다리 이외의
디테일한 부분들은 모두 손수 만들려고 하였다. 그러나…양쪽 팔을 만들고 나니 더이상 수작업으로 뭔가를
만들 엄두가 나지 않았다…ㅠ.ㅠ



이렇게 진행하다가는 결국 제풀에 지쳐 만들다 말게 될 것 같아 잘 쓰고 있는 3D 프린터의 도움을 받기로 했다.
하지만 3D 프린터로 만든다고 해서 일사천리로 진행된 것은 아니다. 누누히 이야기 하지만 3D 프린터의 최대
맹점은 출력하는데 걸리는 시간이다. 그런데다가 만일 어렵사리 출력한 부품을 부러뜨리기라도 하면…ㅠ.ㅠ
아래 부품은 하체의 다리를 연결할 부품인데 왼쪽 위에 보면 다리를 연결할 부위가 너무 힘을 주어 부러져버렸다.
결국 4시간 이상을 들여 다시 뽑아야 했다…ㅠ.ㅠ



진행하면서도 몇 차례 생각이 바뀌었는데 먼저 2족보행형으로 만들려고 했는데 생각해보니 몸통 구조도 그렇고
잘라내야 하는 부분이 많아 4족 보행으로 바꾸었다. 다음으로는 사이버펑크 스타일로 만들까 했었는데 몸통의 투박한 
외형도 그렇고 그냥 대책없이 진행하다보니 결국은 디젤펑크쪽으로 진행이 되어버렸다. 그리고 가급적이면 공격성향을 
띠는 로봇보다는 공병 업무를 수행하는 로봇을 만들까 했는데 팔 부분을 어떻게 만들까 고민하다보니 그냥 원통형으로 
대포나 쭉쭉 뽑아내면 되는 공격형 로봇으로 진행하기로 했다…-.- 


요게 사이버펑크요게 디젤펑크



간략한 진행 경과


만드는 과정을 세세하게 기록하지 못했기에 여기서는 간략하게 만들어져가는 모습을 사진으로만 보여주도록 하겠다.
각 부품의 조립은 대부분 M2, M3 사이즈의 렌치볼트를 사용하였다.


최종 형태를 결정한 후 기존에 작업했던 부분을 떼어내고 3D 프린팅한 부품들을 붙이기 시작한 모습이다. 뒤쪽에는 연료
탱크와 배기구를 달아주었다. 마침 연통을 붙인 부분에 적절하게 나사 구멍이 있어 붙여주었다. 
다리에는 리니어 액추에이터 형태를 만들어 주었는데 실제로는 shock absorber라고 봐야 한다. 내부에 스프링이 
들어있어 실제 shock absorber처럼 작동한다.


Shock absorber 3D 프린팅


이후 중앙에는 기관포를, 상단에는 열 배출구를, 다리에는 장갑을 붙여주고 어깨 부위도 디자인하여 달아주었다.




발이 허전하여 별도로 발을 달아주었는데 평소에는 발의 앞부분과 뒷부분을 접어서 다니다가 포격시 이 부분을 내려
바닥에 고정시킨다는 설정으로 설계를 하였다. 원래 구멍이 뚫린 부분에 나사를 끼워줘야 하는데 귀차니즘에 패쓰~


발을 폈을 때


발을 접었을 때


드디어 주 무장 을 붙였다. 로봇의 우측은 2연장 포 2문을, 좌측은 3연장 로켓 런처 2문을 달아주었다.



이제 슬슬 마무리다.
최종 무장으로 연막탄 발사기를 좌우 8개씩 붙여주었다. 뭔가 좀 어수선하면서도 있어보이는 것이 개인적으로는
맘에 든다. 더불어 상단에는 소형 라이트 4개를 그리고 몸통 가운데는 원래 연필깎이가 투명 부품으로 이루어져 있어
서치라이트로 설정했는데 도색할 때 같이 칠해버렸다는…ㅠ.ㅠ 몇 군데 철사도 박고 연료통과 액추에이터에 호스도
연결하여 모양을 좀 내주었다. 그리고 thingiverse에서 찾은 기름통과 직접 모델링한 탄통도 소품으로 준비했다.




도색


사실 마지막 완성 단계까지 왔는데도 뭔가 흡족하지 않았다. 생각해보니 아무래도 원 재료의 색깔들이 로봇을 어수선하게
하는 듯했다. 그리고 결국은 도색을 결심하게 되었다.


도색을 하고자 마음 먹고는 바로 에어 브러시를 알아보았다. 하지만 이내 돼지 목에 진주라는 것을 깨닫고 포기를 하였다.
(하지만 언제 다시 지름신이 찾아올지…) 그래도 뭔가 격식은 갖춰야겠기에 우선 캔 스프레이 타입의 서페이서를 하나 
사고 도색은 예전에 사다 놓은 아크릴 물감으로 하기로 했다. 다만 예전에 사다 놓은 색이 중장비 설정으로 노랑과 검정
위주로 사놓은 터라 올리브색 계열과 녹을 표현해줄 붉은 색 계열을 더 샀다.


우선 서페이서를 칠해보았다. 냄새 죽인다. 죽을 뻔했다…-.- 대부분의 도색을 1층 현관 옆에 있는 자전거 보관소에서
했는데 바람이 많이 불어 힘들었다. 그리고 부분 부분 덜 칠해진 것을 미련하게도 양수기함에 공간이 있어서 거기서
했는데 진짜 죽을 뻔했다. 암튼 스프레이질은 무조건 환기 잘되는 곳에서 마스크 쓰고 해야겠다.
일단 서페이서만 칠해놔도 제법 그럴듯하다.




그리고 대망의 본도색…예전에 4족 보행로봇 막칠 한 번 해보고는 처음 해보는 도색이다보니 제대로 하고 있는지도 
모르겠고…그냥 칠하다보니 그럭저럭 볼만한 것 같기는 하다. 하지만 도색까지 공부하기에는 할 것 이 너무 많은 관계로
도색은 이걸로 끝을 내야겠다.



정리


이렇게 해서 대망의 Scratch building 첫 작품이 완성되었다. 원래 아두이노와 LED를 이용하여 라이트 부분에 불이
들어오게 할 예정이었으나 생각보다 제작 일정이 너무 길어진 관계로 그 부분은 생략을 하였다. 봐서 시간 나는 때에
작업을 해봐야겠다.


사진을 찍은 날짜를 보니 8월 12일에 첫 사진을 찍었다. 애초에 시작할 때는 가뿐하게 한 달 정도 만들어보고 바로
4/4분기 목표로 들어가려고 했는데 예상보다 한참을 초과하여 2달이 다 되어서야 겨우 작업을 끝마쳤다. 쉽지는
않았지만 재미도 있었고 결과물도 영 못봐줄 수준은 아닌 듯하다^^;; 디테일을 좀 더 살리지 못한 것과 도색이 깔끔하지
못한 것이 못내 아쉽지만 모자라는 부분은 다음 도전에서 채워보도록 하자~


올해 말까지 당분간은 계획했던 공부좀 하고 틈틈이 2족보행 부품 출력해 놓았다가 내년에 다시 본격적으로 아두이노로
작동하는 2족 보행 로봇을 만들어 봐야겠다.

블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^

[툰로그] 태블릿

툰로그 2018.10.08 07:58

책상이 복잡해서 태블릿을 손에 들고 그린다...ㅠ.ㅠ


블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^