2014/05

    유전 학습 - 2

    지난 시간에 이어서 계속해 보겠습니다. 우수한 유전자들을 선택하는 방법까지 알아보았습니다. 이번에는 그 선택된 유전자를 이용해서 !! 자손을 만들어야겠죠. 하지만 부모와 자식이 100% 동일한 유전자를 가질 수는 없는법 ! 그렇기에 유전자 조작을 통해 자손을 만들어야 합니다. 유전자 조작은 부모가 되는 유전자 정보를 바탕으로 복제와 일부 개량을 통해 자식 유전자를 만들어 낼 수 있습니다. 이런 유전자 조작 방법은 교차(crossover)와 돌연변이(mutation)이 있습니다. 부모해를 이용하여 자식해를 만드는 교차의 방법에는 1점교차, 다점교차, 균등교차, 순서교차, 싸이클 교차 등 여러가지 방법으로 자식해를 만들어 냅니다. 1점교차는 하나의 점을 기준으로 나누는 것입니다.예를 들어 부모 1과 부모2를..

    유전 학습 - 1

    유전 학습 이란? 유전이란 말은 수도 없이 들어 봤을 것이다. 살아오면서 부모에게 유전받았다. 라는 소리를 말이다. 이 글을 읽는 모든 분들도 부모나 조상에게 물려받은 특징들이 있을 것이다. 그렇기에, 아버지를 닮았다는 소리나 어머니를 닮았다는 소리를 들을 것이다. 유전 알고리즘은 이런 자연환경의 현상을 바탕으로 만들어진 알고리즘이라고 생각하면 된다. 유전 학습은 자연세계의 진화 과정을 기초로 하여 만들어진 알고리즘이다. 생물의 진화과정을 모방하여 문제를 해결하는 기법중의 하나이다. 유전이라 함은 부모에게 자녀가 어떠한 형질을 물려받는 것을 말한다. 그렇게 실제로 진화하면서 우성적으로 진화할 수 도 열성적으로 진화할 수도 돌연변이가 발생할 수 도 있는 문제이지만, 여기서 유전 학습은 점점 답을 찾기위한,..

    지도 학습 - 1

    1. 지도 학습이란?지도학습 혹은 감독학습이라고도 불립니다. 감독 혹은 지도받은 내뇽에 기반하여 학습하는 방법을 말합니다. 지도 학습은 말 그대로 옳고, 그름을 알려주는 지시자(교육자)가 존재하고, 그 옳고 그른 데이터에 의해 학습하는 방법입니다. 이런 의미에서 교사학습이라 불리기도 하는데요. 이와 반대되는 개념으로, 어떠한 학습 사례나, 학습 방법, 등을 지시/감독 받지 않고, 학습을 하는 방법을 비지시, 비감독 또는 비교사 학습이라고 합니다. 일반적으로 개인의 독학보다는, 개인에게 교사가, 지식을 전달해준 눈군가가 있다는 것은 더욱 효율적이고 정밀하게 학습할 수 있는 환경을 만들어 줍니다. 학습에 관해 교사에게 옳고, 그름을 배울 수 있으므로 다른 학습 방법보다 빠르고 정확한 학습을 할 수 있습니다...

    램디스크 ( Ram disk )

    커널 이미지와 함께 반드시 제작해야 하는 바로 Ram Disk 이미지(이하 램디스크 이미지)입니다. 램디스크는 별다른 물리적 장치를 지칭하는 것이 아니라, RAM 영역의 일부분을 디스크처럼 사용하는 것입니다. 이러한 램디스크 이미지는 부팅시 램디스크를 루트(/)로 이용할 경우, 커널에 의해 압축된 램디스크 이미지 파일이 풀리면서 램에 로딩되고 시스템 구동에 필요한 init, busybox, tinylogin 및 유틸리티와 환경파일 등이 최상위 디렉토리(/)에 배치하게 됩니다. 이렇게 타겟보드에 필요한 파일들을 모아서 이미지 파일로 작성한 것이 바로 램디스크 이미지입니다. RAM은 전원이 꺼지면 기억된 내용이 지워지므로 플래시 메모리 영역에 램디스크 이미지를 저장한 후 부팅 때 마다 풀어서 사용하게 됩니다.

    n-gram 출현빈도에 기초한 텍스트 데이터 학습 - 2

    지난 시간에 n-gram으로 나눠서 데이터를 저장하는 것 까지 하였다. 이번시간에는 그 데이터를 이용해서, 데이터의 빈도수를 확인하는 방법에 대해 알아본다. 저장된 데이터를 한 줄씩 읽어와서 그 데이터를 다음 데이터와 비교하여 중복된다면 갯수를 올리고, 그렇지 않다면 다음 데이터와 비교한다. 정리해보자. 1. n-gram data를 읽어와서 저장한다.2. n-gram data를 분석하기 편하게 qsort를 이용해 정렬한다.3. 중복된 데이터를 삭제하고 빈도수 계산한다.4. 결과를 다시 qsort를 이용해 정렬한다. #include#include#include #define MAX_N 10#define NGRAM_NUM 1000000#define NUMF 4 char data[NGRAM_NUM][MAX_N..

    텍스트 파일 한줄씩 입력받기.

    #include #define N 100 //입력받을 데이터 크기 void main(){ FILE *pfile; char str[N]; fp = fopen("data.txt", "r"); // 파일 열기 while(!feof(pfile)) // 파일의 끝이 아니라면 { fgets(str, 80, pfile); // 최대 80칸짜리 한줄 읽기 puts(str); // 한줄 출력 } fclose(pfile); }