전체 글 66

최적화와 학습이란 용어 대한 생각...

내가 주로 연구하는 것은 최적화(Optimization)이다. 학습에 대해서는 분명 최적화만큼의 지식이 없으며, 이에 대해 여전히 상당한 혼란을 겪고 있음을 사전에 밝힌다. 최적화는 일반적으로 수학에서 많이 쓰이는 용어이며, 가장 대표적인 예로는 실수 최적화가 있다. 어떠한 주어진 함수 f(x) 의 최대 혹은 최소 값을 찾아내는 문제로서, 미분이 가장 대표적으로 사용되는 기법이다. f'(x) = 0 인 지점을 변곡점이라 하고, 이 변곡점들에서 최대, 최소값이 발견될 수 있다. 유전 알고리즘이나 진화 전략(Evolutionary Strategies) 혹은 PSO(Particle Swarm Optimization) 기법들 또한 이런 최적화를 위한 도구이며, 종종 최적화라는 이름으로 언급되곤 한다. 학습(Le..

GAlib for visual studio 2008 lib file

GAlib 가 가볍고 잘 만든 Genetic Algorithm Library 인데 개발 중단된지도 오래되었고, 현재 최신버전의 컴파일러에서 컴파일은 되지만 링크가 되지 않는 문제가 있다. http://www.hyperdrifter.com/software/tutorial/compiling_galib_using_microsoft_visual_cpp.html 위의 링크에서 말하는대로 컴파일하면 링크이상없이 잘 수행되는 것을 확인할 수 있고, 첨부된 파일은 귀찮고 단지 library 파일만 쓰고싶은 사람을 위한 것이다.

GA나 GP의 이론 검증의 어려움

GP 의 해가 가지는 특성을 파악하기 위해 실험을 통해 대규모의 데이터를 수집하였다고 가정하자. 그리고 대부분의 해에서 나타나는 어떠한 특성이 발견 되었다면, 과연 여기서 대부분의 해는 반드시 그 어떤 특성을 갖게 되는 것일까? GA, GP 의 조기수렴이 해의 다양성에 악영향을 끼치고, 좋은 결과로 수렴하는 것을 방해한다고 했을 때, 조기수렴을 막으면 반드시 해가 다양성을 폭넓게 가지면서, 좋은 결과로 수렴할 것인가? 어떠한 명제를 가정했을 때, 그 역이 반드시 참일것이라는 보장 같은 것은 없다. 결국 우리가 일반적으로 데이터를 수집하여 하는 일은 대부분이 그러한 특성을 보인다는 것에서 끝나는 것인데, 이것의 역을 증명해낼 좋은 방법은 없을것인가? 몇년째 계속 고민해보지만, GA, GP 쪽에서는 이를 어..

CUDA Programming

병렬처리는 결국 필수 불가결한 요소가 될 것임에는 분명하다. 확실히 단일 코어 발전 대비 성능 비율이 언젠가부터 매우 낮아진다는 것을 확인할 수 있다. CPU 를 듀얼 혹은 쿼드로 쓰는 것도 꽤 매리트가 있지만, 알고리즘을 연구하는 사람으로써 그런 한 두개의 병렬을 가지고 큰 효과를 보기에는 그 한계가 명확하다. 결국 요래저래 살펴보다가 또다시 GPU 쪽으로 눈이 돌아가게 되었는데, 그 당시에는 그렇게 어렵게만 느껴지던 CUDA 라는 것이 그렇게 어려운 녀석이 아니었다. 일련의 흐름에 따라서 프로그래밍을 하면 되는데, 1. 디바이스의 초기화 2. GPU 상의 메모리 할당 ( cudaMalloc ) 3. CPU 상에서 GPU 상으로 처리할 내용을 복사 ( cudaMemcpy ) 4. 커널을 수행함으로써 원..

윈도우에서 Sleep 함수 사용

#include #include void wait(double sec) { unsigned int msec; assert(sec > 0); msec = (unsigned int) floor(sec * 1e3); assert(msec >= 10); Sleep(msec); } 리눅스용 프로그램을 윈도우로 변환하다가 가끔씩 애를 먹었던 부분인데 ( 나만 그런지 모르겠지만…;; 윈도우에서 Sleep 함수는 저런 형태로 사용할 수 있다. 리눅스에서는 #include #include void wait(double sec) { unsigned int msec; assert(sec > 0); msec = (unsigned int) floor(sec * 1e3); assert(msec >= 10); usleep(msec..

대표적인 로보틱스 프레임워크들

로보틱스 시장을 선점하기 위한 각계의 노력이 이어지고 있는 가운데, 두각을 나타내는 프레임워크들이 속속 나타나고 있다. 대표적 로봇 프레임워크 MSRDS, OROCOS, RTC, OPRoS MSRDS 는 아직 전폭적인 지원을 받으며 개발되고 있는 상태는 아닌것으로 보임 가장 큰 특징은 .NET Framework, Service Oriented Architecture, 즉 DSS, CCR 로 구분되는 Run-time 환경 ERSP - Evolution Robotics 사에 의해 모바일 로봇을 개발하기 위한 소프트웨어 플랫폼(상용임) http://www.evolution.com/products/ersp/ OROCOS - 유럽 프로젝트, Component based Robot Software http://ww..

Imagine Cup 2009 Embedded 부문 후기 입니다

이번에 이매진컵 임베디드 부분에서 U-Boat : Automated Navigation Boat for Water Inspection and Analysis 라는 작품으로 2차 라운드까지 진출한 U-Boat 팀의 메인 프로그래머랍니다 -_- (대체 뭐임 이 병맛 소개는 ㄲㄲ) 네.. 저희 작품 그래도 한국대표 선발전에서 2위 했어요 ㅜㅜ (감격임 정말 -_-) 이매진컵이라는 대회를 처음 알게된 것이 작년 12월이었군요. 그때부터 참가를 한번 해볼까 망설이고 있었는데, 사실 작품의 아이디어가 안떠올라서 계속고민을 하다가 결국은 2월 초에 결정을 짓고 참가하게 되었습니다. 처음 1차 라운드 통과를 하게되어서 사실 긴가민가 하더군요. 통과는 할 수 있겠지라고 생각했지만, 워낙에 많은 학생들이 참여하는 대회라서..

Google MAP 을 ASP.NET 으로 제어하는 방법들

http://www.shabdar.org/google-maps-user-control-for-ASP-Net-part1.html http://www.codeproject.com/KB/custom-controls/LatLaysFlat-Part1.aspx 개인적으로는 위의 것을 더 추천한다. 훨씬 사용하기가 간단하고 수월하다는 이유 하나만으로. 아래쪽의 것은 더 체계적으로 잘 되어 있는 듯 싶지만, 사실 좀 복잡하다. 음... 이걸 찾아서 사용하게 된 이유라면 C# 이 왠지 손에 익숙해지기 시작했고, 작업속도가 C#을 쓰는것과 JAVA 를 쓰는것 중에 C# 을 쓰는것이 월등히 빨라졌기 때문이랄까... 거기에 Dreamspark 덕분에 공짜로 IIS 를 맘놓고 사용하고 있으니... 혹시라도 구글맵을 ASP.NE..

Fedora Core 10 에서 DNS 재설정 문제

페도라 10 에서 네트워크 관리자에서 계속 DNS 재설정하는 현상이 발생하는분은 요렇게 해보시면 아마 해결될 것 입니다. /etc/sysconfig/network-scripts/ifcfg-eth0 혹은 ifcfg-eth1 또는 ifcfg-개인이 지정한 프로파일 이름 위의 파일을 여시면 # Please read /usr/share/doc/initscripts-*/sysconfig.txt # for the documentation of these parameters. GATEWAY=XXX.XXX.XXX.XXX TYPE=Ethernet DEVICE=eth1 HWADDR=XX:XX:XX:XX:XX:XX BOOTPROTO=none NETMASK=255.255.255.0 IPADDR=XXX.XXX.XXX.XXX O..

진화 연산과 병렬 처리 시스템

1. 개요 병렬처리 시스템은 최근에 가장 주목 받고 있는 컴퓨팅 성능 향상 기술 중에 하나입니다. 물론 과거에도 병렬처리 시스템이 주목 받아 왔지만, 그 당시에는 CPU 의 업그레이드 만으로도 50%, 100% 이상의 성능향상을 이룰 수 있었기에 지금보다는 적은 관심을 보였었습니다. 그러나 현재의 CPU 가 가진 한계에 거의 다다름에 따라, 성능 개선의 기법으로 병렬처리 기법들이 주목을 받고 있습니다. 즉, 하드웨어적 한계를 소프트웨어 적인 기법으로서 넘어서려고 한다고 표현할 수 있겠습니다. 이 병럴처리 시스템은 크게 내부, 외부의 두 가지 요소로서 존재한다고 볼 수 있겠습니다. 내부 요소로서는 CPU 의 멀티 코어화, GPU 의 발전 등을 들 수 있겠고, 외부적으로는 대규모 네트워크로 구성된 컴퓨팅 환..