ITS's Dev Story

오늘은 지지 벡터 머신에 대해 알아보기로 하였다. 

이제부터 이 Numpy 기계학습 게시글에는 많은 자료를 올리지 않으려고 한다. 나는 이미 내 머신러닝 프로젝트에 쓸 알고리즘을 이미 찾았기 때문에 이제부터는 간략하게 요약만 할 생각이다. 아래는 위키피디아에서 가지고 온 '서포트 벡터 머신'이라는 자료이다.

-------------------------------------------------------------------------------------------

* Numpy 기계학습의 모든 문서는 제가 머신러닝을 공부하고, 제 프로젝트에 필요한 알고리즘을 찾기 위해 정리하는 일종의 '요점정리 노트' 입니다. 혹여나 오해 없으시기 바랍니다.

-------------------------------------------------------------------------------------------

서포트 벡터 머신(support vector machineSVM[1])은 기계 학습의 분야 중 하나로 패턴 인식, 자료 분석을 위한 지도 학습 모델이며, 주로 분류와 회귀 분석을 위해 사용한다. 두 카테고리 중 어느 하나에 속한 데이터의 집합이 주어졌을 때, SVM 알고리즘은 주어진 데이터 집합을 바탕으로 하여 새로운 데이터가 어느 카테고리에 속할지 판단하는 비확률적 이진 선형 분류 모델을 만든다. 만들어진 분류 모델은 데이터가 사상된 공간에서 경계로 표현되는데 SVM 알고리즘은 그 중 가장 큰 폭을 가진 경계를 찾는 알고리즘이다. SVM은 선형 분류와 더불어 비선형 분류에서도 사용될 수 있다. 비선형 분류를 하기 위해서 주어진 데이터를 고차원 특징 공간으로 사상하는 작업이 필요한데, 이를 효율적으로 하기 위해 커널 트릭을 사용하기도 한다.

이 알고리즘은 데이터에 집합이 주어졌을 때, 주어진 데이터 집합을 바탕으로 하여 데이터가 어느 카테고리에 속하는지 판단하는 분류 모델을 만드는데, 이 분류 모델은 아래와 같이 데이터가 사상된 공간에서 경계로 표현된 선형 분류 모델을 만들게 된다. 



* 사진 출처 : 위키피디아

아래는 SMO 알고리즘의 도움 함수이다.

def loadDataSet(fileName):
    dataMat = []; labelMat = []
    fr = open(fileName)
    for line in fr.readlines():
        lineArr = line.strip().split('\t')
        dataMat.append([float(lineArr[0]), float(lineArr[1])])
        labelMat.append(float(lineArr[2]))
    return dataMat,labelMat

def selectJrand(i,m):
    j=i 
    while (j==i):
        j = int(random.uniform(0,m))
    return j

def clipAlpha(aj,H,L):
    if aj > H: 
        aj = H
    if L > aj:
        aj = L
    return aj

오늘은 여기까지 하기로 했다.

요즘 개발 프로젝트도 있고 해서 제작 속도가 많이 더디긴 했지만, 그래도 완성했다는 것에 의의를 두겠다.

▲ 스프링, 베어링을 배치 후, 철사로 고리를 고정한다.

▲ 나머지 손가락도 위와 같이 만들었다. 이 부분에서 스프링 자르기가 굉장히 힘들었다.

▲ 모터 커플러 조립 후 배치, 방향전환봉 지나기

▲ 손가락 구동부 지나기

▲ 나머지 손가락도 위와 같이 만들었다.

▲ 고무줄 묶기

▲ 나머지 손가락도 위와 같이 해 준다.

▲ 나머지 손가락도 위와 같이 해 준다.

▲ 택트 스위치 조립

▲ 리미트 스위치 조립. 리미트 스위치 날개를 접히는데 많이 뜯어져서 만드로님에게 날개 여유분을 더 요청했더니 흔쾌히 보내 주셨다. ㅎㅎ

▲ 이렇게 조립한다.

▲ 스위치가 떨어지지 않게 글루건으로 붙인다.

▲ 엄지부분 조립

▲ 커버 조립, 고무줄이 약간 엉성하다.

▲ 손 부분은 완성이지만 테스트를 안했으므로 진짜 완성은 아니다.

▲ 클림프 터미널 조립, 클림프 터미널의 자르는 부분을 선을 감는 부분으로 오인하여 이렇게 엉성하게 되었다. 만드로님이 '사무실에 오면 한번 봐 주겠다' 라고 해서 사무실에 찾아갔다.

▲ 결국 어려운 클림프 터미널은 포기, 해체하기 위해 뜯고, 납땜을 푸려는데...

▲ PCB 기판의 연결부위도 같이 떨어져 기판을 하나 날려먹었다. ㅠㅠ (자세히 보이지 않음)

▲ 다른 PCB 기판을 구해서 조립

▲ 다시 연결했다.

▲ 실행하니 본의 아니게(?) 뻐큐가 튀어나온다.

▲ 다시 파워서플라이로 전원을 키는데...

▲ 보드에 쇼트가 난 듯 하다.

 ▲ 원인을 찾아보니 택트랑 리미트가 제대로 눌리지 않아 모터를 계속 돌리게 되고, 이로 인해 모터드라이브가 과부하되어 쇼트가 난 것이었다. 처음에는 원인을 몰라 테스트를 위해 아두이노를 4개나 날려먹은 흑역사가 있다. (...) 다음에 다시 와서 제대로 확인해 보기로 하였다.

▲ 오늘 만드로님이 행사를 하고 계신 의정부의 '오작교 페스티벌'에 가기로 했다.

▲ 코레일 311904호 전동차 (소요산행), 열차를 타고 의정부 경기북부문화창조허브로 갔는데, 아무도 없었다. 알아보니 어룡역에 있다고 한다. '분명히 경기문화창조허브겠지' 라고 알아보지 않은 게 잘못이였다. 앞으로는 무엇이든지 확인해 보아야 겠다.

경전철을 타고 어룡역으로 가니 K-ICT 3D프린팅 센터가 있었다. 거기서 만드로님을 만날 수 있었다.

▲ 쇼트 오류를 찾아보니 스프링을 조절할 필요가 있다고 해서 스프링을 짧게 조절했다. 여기서 내가 모르고 있었던 롱노우즈의 올바른 사용법을 알 수 있었다. 

그렇게 해도 문제가 생기자, 모터드라이브를 바꿔 껴보기로 하였다. 그러고도 안 되었다. 그래서 모터드라이브를 아래에 하나만 껴 보니 동작하였지만, 2개 손가락이 같이 움직였다. 또 그 모터드라이브를 위로 올리니, 아두이노가 작동이 안 되었다. 

제대로 문제 테스트를 하려면 전기 테스터기와 파워서플라이가 현장에 있어야 하는데, 만드로님이 둘 다 가지고 계시지 않았고, 어짜피 나는 시간이 넉넉하여 만드로님 차를 타고 부천 만드로 사무실에 가기로 하였다.

▲ 이동중...

▲ 부천 도착!

▲ 합선 문제가 안 생기도록, 수정을 안하겠지만 수정을 대비하여 클림프 터미널을 사용하기로 하였다. 나머지도 절연테이프를 사용해 고정, 클림프 터미널을 사용했다. 배터리는 CR2를 3개 결합했다. 그래야 전압을 맞출 수 있다고 한다.

▲ 드디어 완성했다. 다시 테스트를 해 보았는데 손을 줬다 폈다 그리고 2, 3, 5번째 손가락만 느슨하게 작동했다. 그래서 Firmware 소스 코드의 Tension을 바꿔 보기로 하였다.

▲ 드디어 완성 Test를 했더니 잘 작동하는 동영상을 확인할 수 있다.

(프로젝트 기간 : 2015.12.30 - 2016.03.11) 

아직 중학생이다 보니 개발 프로젝트와 학업 등을 동시에 신경써야 해서 일들이 너무 많이 밀려 실질적으로 의수에는 시간을 많이 투자하지 못했고, 공구 사용 등 경험에서 오는 부분들이 부족해 다소 어렵게 느껴졌지만 무언가 시작했으면 끝을 봐야 정말로 얻을 수 있는 것들이 많다는 생각을 하게 되었다.

만드로 전자의수 Mark.4 를 조립하면서 많은 테크닉들을 익힐 수 있었다. 내가 손재주가 좋은 편은 아니라 처음에는 의수를 만들 수 있을지 걱정했는데 완성해 보고 나니 특히 공구는 힘을 쓰는 것이 아닌 머리를 쓰는 것이라는 걸 다시 한번 알게 되었다.

앞으로 메이커로 발전하고 성장하려면 많은 물건을 직접 조립해 보는 습관을 가져 봐야 할 것 같다. 

특히 이 키트를 제공해 주시고, 질문하면 즉각즉각 답변해 주신 만드로님께 다시 한번 감사의 말씀 드립니다.


이번 주말에 컨벤션 센터에서 삼촌 결혼식이 있어 제주도에 다녀 왔다. 

이번에는 사람들이 제주도에 너무 많이 왔는지 비행기표도 겨우야 구하고 굉장히 혼잡했었다.

보안검색대에서도 30분을 넘게 기다리고 다 끝내고 나와 보니 나를 마지막 손님으로 찾고 있었다.

(* 보안검색대 사진은 모자이크 처리를 하였으나, 문제가 된다면 삭제하겠습니다.)

저 멀리 봄바르디어 Global Express XRS 자가용 비행기가 보인다.

가까이서 찍어 보았다. 역시 부자들은 일찍 활동하는 것 같았다. 나도 3년 후, 비행기와 헬기 면허를 취득할 계획을 가지고 있다. (* 운전면허보다 1년 빨리 가능/단, 사업용 면허 제외)

이번 년도에는 가능하다면 항공무선통신사 자격증을 취득할 계획을 가지고 있다. 원래 미국에서는 자가용조종사 면허를 가지고 있으면 그냥 바로 운전할 수 있는데 우리나라는 추가로 무선통신사를 따야 한다. 이건 나이제한이 있는게 아니라서 곧바로 딸 수 있다. 이를 취득하면 아저씨들이 많이 즐겨하는(?) HAM 무전기와 항공 무전기 둘 다 운영할 수 있다.

제주도 결혼식은 원래 3일 동안 하는데 삼촌 결혼식은 2일에 걸쳐서 했다. 무슨 친척이 이리도 많은지 본 적이 없는 분들께 인사하느라 힘들어서 쇠소깍에 산책을 나왔다. 어머니가 나온 초등학교와 가까운 곳에 있었는데 쇠소깍 효돈천은 변덕스러운 제주도 날씨때문인지 갑자기 물이 불어나고 물살이 쎄져 방학이 끝나면 안좋은 소식들을 듣게 되는 적이 많았다고 한다. 그래서 그곳에서 노는 것을 굉장히 조심했다고 한다.

그 다음날, 넥슨 컴퓨터 박물관에 방문했다. 우리가 흔히 보지 못하는 컴퓨터의 역사를 제대로 관람할 수 있는 기회여서 좋았다.

세계 최초의 마우스

옛날 타자기들

옛날에 디스켓 대용으로 썼었던 Punched Card이다. 초등학교 2학년 때 읽었던 '빌 게이츠' 라는 만화책에는 빌 게이츠가 이 카드를 사용해 비주얼 베이직 프로그램을 만들었는데, 그냥 펀치만 하면 되는 구조라 시중에서 불법복제가 심해져 빌 게이츠는 정품 소프트웨어 사용에 대해 굉장히 많은 관심을 가지게 되었다고 한다.

플로피 디스크의 변천사

CD -> DVD -> SD Card -> 블루레이 -> HDD

다음은 그래픽 카드의 변천사이다.

사운드 카드의 변천사

넥슨을 성공하게 만들어 준 '바람의 나라' 최초 상용화 개발에 사용했던 Unix Server이다.

추억의 PC통신.

직접 해보니 메신저 기능밖에 없었다. 지금에 비하면 PC통신은 진짜 안습이였다. 요금도 많이 나오고... 그래도 우리나라 인터넷의 시초라는 의미가 있고, 그때 PC통신은 정말 매력적인 수단이었을 것이다.

MS Flight Simulator. 일요일에는 기계가 쉬고 있어 아쉽게도 해보진 못했다.

Maplestory VR. 조작은 많이 힘들었지만 후 서비스가 더 개발되면 매력적인 게임이 될 것이라고 생각한다.

넥슨 오락실. 옛날 게임들과 책들을 소장하고 있었다.

아이들이 너무 많아 아쉽게도 해 보지는 못했다.

참 멋진 말들.

옛날 컴퓨터들

아두이노를 사용해 구현한 넥슨 게임.

전시장에 마련된 소규모 FAB.

여기서 아들 2명을 컴퓨터 박물관에 데리고 온 어머니를 만날 수 있었다. 직접 이야기를 나누진 못했지만 그들의 특별한 스토리를 우연히 듣게 되었다. 도슨트의 지시에 따라 LEGO Mindstorm을 사용해 두 아들이 프로그램을 만들고 있었다. 듣고 보니 게임 중독에 걸린 두 아들은 컴퓨터 박물관 견학과 교육을 통하여 소프트웨어에 관심을 가지게 되었다는 이야기였다.

도슨트는 '너희가 게임을 미치도록 했지만, 여기서는 너희가 게임을 만드는 작업이다. 너희의 창의성을 활용해 프로그램을 멋있게 만들어 보길 바란다.' 라고 하며 지도하고 있었다. 그 후 어머니는 도슨트와 단독으로 소프트웨어 교육에 대한 이야기를 나누었고, 게임 중독에 걸린 아이들이 소프트웨어에 관심을 가지는 모습을 보고 크게 감동하여 마인드스톰 서적을 열심히 본 후 인터넷 쇼핑몰에서 LEGO 마인드스톰을 구매하는 듯 하였다.

넥슨 컴퓨터 박물관 견학을 통하여 한 아이가 소프트웨어에 관심을 가지게 되었다는 것은, 그 아이의 인생의 큰 변화를 주는 '터닝 포인트' 가 되지 않을까 생각한다. 그 이후의 이야기도 궁금해지는 부분이였다.

이후 내려가려는데 SCI-3000을 이용한 로봇 프로그래밍 워크샾이 있어 듣고 가기로 하였다. 로봇 팔이 움직이는 동영상을 찍었다.

"게임은 창의성을 키우는 기반이다"

지하로 내려가는 계단에서 본 말들... 참 의미있는 말들이다.

정수형을 처리하기 위한 변수인 int.

넥슨에서 복원된 최초의 Apple Computer.

좀 늦은 오후에는 제주항공우주박물관에 방문했다.

전투기 시뮬레이터

실제 비행기를 가져왔다. 이 박물관은 비행기를 들여오기 쉽게 격납고 형태로 지어졌다.

호텔에 들어와서 TV를 켜보니 김대식 교수님이 나왔다.

"내년이나 내후년에는 이세돌 9단이 당연히 질 거고, 그 다음부터는 인간이 더 이상 바둑으로는 기계를 이길 수 없습니다. 제가 이세돌 9단이었다면 저는 1천2백억 원 달라고 그랬을 것 같아요"

Bye Jeju, Hi Seoul!

저 멀리 서울대학교가 보인다. 내일부터 새학기가 시작된다. 서울대 영재원에서도 열심히 내 프로젝트를 수행하고, 학교 생할도 잘 하고, 다양한 문화를 접하는 내가 되었으면 좋겠다. 앞으로 더 열심히 해야 겠다는 각오를 하게 되었다.


'Travel' 카테고리의 다른 글

(2016.06.13) 일본 오이타 온천 여행  (0) 2016.06.17
(2016.05.06) 일본 도쿄 여행  (0) 2016.05.07
(2016.05.05) 일본 도쿄 여행  (0) 2016.05.07
(2016.05.04) 일본 도쿄 여행  (0) 2016.05.07
(2016.05.03) 일본 도쿄 여행  (0) 2016.05.07