디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

마구잡이로 만드는 단층 퍼셉트론

생각놀이갤로그로 이동합니다. 2012.02.18 14:52:25
조회 571 추천 3 댓글 3


  보통 뉴럴네트워크라고 하면 굉장히 어려운 것 이라고 생각하는 경우가 많은 것 같음


  통상 ANN이라고 불리는 인공신경망은 현재에 와서는 그 종류가 상당히 많고 복잡한 알고리즘이 많아서 처음 하는 사람들이 접근하기 어려움
 
  하지만 초창기의 단층퍼셉트론과 역전파방식으로 학습하는 다층퍼셉트론은 고등학교 수준의 수학만 할 줄 알아도 별 어려움 없이 구현이 가능함 
('구현만' 가능함 -_-;; 수식이 다 유도되어 있어서... )

  신경망에 대한 자세한 내용은 DMW횽의 게시물을 보삼 (솔찍히 이거보다 잘 쓸 자신이 없음;; )
 
  DMW횽의 잉여잉여 퍼셉트론 참조 : https://gall.dcinside.com/list.php?id=programming&no=136419&page=1

 지금부터 만들건 하나의 뉴런을 만들고, 그 뉴런에다가 큼퓨터의 기본적인 연산은 AND와 OR을 각각 학습시켜 볼 거임.

  인공신경망을 구성하는 '뉴런'은 조금 극단적으로 보면 이런식으로 구성되어 있뜸

        출력 =  활성화함수( [입력 벡터] * [가중치 벡터]T - 임계치 )
 

  여기서 T는 Transpose인데 행렬의 행과 열을 바꿔치기 하는 연산이고 벡터는 한줄짜리 행렬을 의미함 -0-

 활성화 함수로는 보통 step함수나 signoide 함수를 사용하는데, signoide함수는 미분이 용이해서 역전파 알고리즘에서 많이 쓰임.

여기에서는 step함수를 사용하고 step함수는 다음과 같이 정의함

 step(x) =    1   , x < 0
                   0  , otherwise

들어가는 x값이 0보다 크면 1이 되는 단위계산 함수임.

결국 뉴런의 정체라는 건 입력벡터와 가중치 벡터의 내적이 미리 정해놓은 임계값을 넘으면 활성화(1출력) 아니면 비활성화(0출력) 하는 블럭인 것임

 여기에서는 임계치는 임의로 정하면 됨 (ex 0.5)
 우리가 만들것은 2개의 입력을 받고 그것의 AND연산을 하여 출력할 수 있는 뉴런 이므로, 뉴런은 결국 다음과 같은 구성이 됨

  Y = step( [x1, x2] * [w1, w2]T  - 0.5 ) 
     = step( x1w1 + x2w2 - 0.5 )

 와.. 짱 단순함 이건 그냥 행렬의 곱셈인 거임.  따라서 우리가 이 뉴런에다가 적절한 w1과 w2값을 넣어주기만 하면, 이 뉴런은 AND함수로도 OR함수로도 동작할 수 있음 (Xor은 안댐;;; 단층 신경망은 선형분리가 불가능한 님은 분류가 불가능함..)

다만 이 한가지 문제가 있음....  바로 w1과 w2값을 모른다는거 ;;;

 이 뉴런이 내가 원하는 함수로 동작하도록 하는 w1고 w2값을 찾기 위해서는, 임의의 입력을 넣고 그 출력을 우리가 원하는 출력과 비교해서 w1,w2값을 우리가 필요한 값으로 근사해 나가는 작업이 필요함.

 우리는 이것을 학습이라고 함.

 학습은 아래의 명료한 공식에 의해 이루어짐 참 여기서 학습률은 한번의 학습에서 가중치가 변화하는 비율인데 적당한 값을 써 주어야 함
너무 크면 학습오차가 커지고, 너무 작으면, 학습이 오래걸리게 됨

 w1 = w1 + 학습률 * x1 * 출력오차
 w2 = w2 + 학습률 * x2 * 출력오차 
출력오차 = 목표출력 - 현재출력값

대충 이런 방식으로, w1과 w2값을 구하고 그 값이 AND연산이 될 때 까지 계속 반복해서 학습을 하면, AND연산을 하는 뉴런이 완성댐..

C로 짜 놓은 소스 첨부함 
---------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <math.h> 

double step(double x); //스텝함수 

int main(int argc, char *argv[])
{
  double input[4][2] = {0,0,0,1,1,0,1,1};
  double w[2] = {0.1, 0.9}; //가중치
  double thold = 0.5; // 임계치 
  double x[2]; //입력값
  
  double y = 0; // 결과값 
  const int xnum = 2;//입력값의 개수
  int cnt =0;
  double error = 0; // 에러수치 
 
  double alpa = 0.1; //학습률 
  
  int superloop = 0;
  
  printf("로젠블렛 퍼셉트론 OR연산 학습 n");  
  for(superloop = 0; superloop < 4*6; superloop++)
  {
     for(cnt =0; cnt < xnum; cnt++)x[cnt]=input[superloop%4][cnt];
                
     double sum =0; //선형결합
     for(cnt =0; cnt < xnum; cnt++)  sum += x[cnt]*w[cnt];
  
     y = step(sum - thold);  //하드리미터
  
     //에러값 추출  
     error = (x[0] || x[1]) - y;
  
     //가중치 보정 
     for(cnt =0; cnt < xnum; cnt++) w[cnt] = w[cnt] + alpa * x[cnt] * error; 
  
     if(superloop%4 == 0) printf("n%d 회차n",superloop/4);
     printf("%f  %f 결과값 : %lfn",x[0],x[1],y);
     if(superloop%4 == 3) printf("가중치 : w[0] : %lf , w[1] : %lfn",w[0],w[1]);
}

  [...];        
  return 0;
}

double step(double x)
{
    if( x < 0 ) return 0;
    else return 1; 
}
---------------------------------------------------------------------------------------------------------------


추천 비추천

3

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 뛰어난 운동 신경으로 남자와 싸워도 이길 것 같은 여자 스타는? 운영자 25/11/24 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
304100 프갤에 마지막으로 글 올립니다. 이 글을 마지막으로 프갤떠납니다. [48] ㅇㅇ(58.77) 12.02.20 203 0
304097 대학교 > 고등학교 / 대학원 > 대학교 수준으로 교육 수준 낮춰야 함 [2] 1(211.197) 12.02.20 109 0
304096 중고등어들아. [1] 생물학(122.35) 12.02.20 47 0
304095 갑자기 프갤에서 토론이열림 [20] 복룡갤로그로 이동합니다. 12.02.20 106 0
304093 님들 돈 개인재산 100억 있으면 뭐할거 [12] 1(211.197) 12.02.20 109 0
304091 아무리 소프트웨어쪽으로 이해력이 높고 마인드가 있는넘이 회사를 운영해도. [6] 이문동쮸쮸바갤로그로 이동합니다. 12.02.20 175 0
304089 프갤에 나같은 중고딩있나 [6] 복룡갤로그로 이동합니다. 12.02.20 101 0
304088 돌격앞으로!!!ㅋㅋㅋㅋㅋㅋㅋㅋ [9] 개발자(121.186) 12.02.20 131 1
304087 프로그래머라는 직업의 장래성! [3] 이문동쮸쮸바갤로그로 이동합니다. 12.02.20 162 0
304086 제가 처음 샀던 시디는 스타1정품+ 테크노마트에서 대놓고 팔던 (211.61) 12.02.20 37 0
304085 프로그래머가 천대 받을수 밖에없는 이유.. 나도 어렸을적 부터 일조 한듯 [8] 쿄스케갤로그로 이동합니다. 12.02.20 127 0
304082 내가 생각하는 우리나라 프로그래머로의 적절한 전망 (211.61) 12.02.20 153 0
304081 결론은 어른이문제네 [4] 복룡갤로그로 이동합니다. 12.02.20 76 0
304079 근데 게임봇은 그 게임 개발자가 유통시키는 경우도있다는데 사실일까?? [4] (211.61) 12.02.20 99 0
304078 디스트릭트 홀딩스 대표이사가 과로사했대 [1] Dawnwalkre갤로그로 이동합니다. 12.02.20 66 0
304076 프로그래머는 왜 대우가 나쁨? [7] 1(118.220) 12.02.20 150 0
304075 개발자가 꿈입니다.. 라고 글쓰는 어린이들의 글에 이렇게 답하자. [2] iljeomobolt갤로그로 이동합니다. 12.02.20 130 0
304074 근데 인클루드만문제엿네 [3] 복룡갤로그로 이동합니다. 12.02.20 58 0
304073 진리표를 이용해서 간소화 하는것좀 도와주세요! [4] 늅늅돌이(199.98) 12.02.20 276 0
304072 저거알려줄 능력자없어요 ? [1] 복룡갤로그로 이동합니다. 12.02.20 68 0
304071 근데 왜 프갤은 갤러리 목록에 안보여? [2] SFCFS갤로그로 이동합니다. 12.02.20 37 0
304069 그리고 소스코드 부분에서 [3] 복룡갤로그로 이동합니다. 12.02.20 67 0
304068 우리 회사는 다 좋은데 우리 팀 이사님이 바라는게 많음.. [5] SFCFS갤로그로 이동합니다. 12.02.20 88 0
304067 형들 이거 왜않되 도저히모르겟어 [23] 복룡갤로그로 이동합니다. 12.02.20 129 1
304066 회사에 여자 개발자들 있음?? [2] SFCFS갤로그로 이동합니다. 12.02.20 137 0
304065 new 한 거 delete 안 시켜주면 어떻게 되냐 [5] ㅁㄴㄻㄹ갤로그로 이동합니다. 12.02.20 57 0
304064 “이 시대, 개발자로 살아간다는 것은…” [2] 개발자(121.186) 12.02.20 84 0
304063 yomiko님 가르침을 주십쇼.. [3] 2222(202.30) 12.02.20 89 0
304062 아까보이스피싱 당한거같다구햇자나 [8] 싴보이갤로그로 이동합니다. 12.02.20 115 0
304060 버그가 존니스트 무서워 ㅠㅠ Prographer갤로그로 이동합니다. 12.02.20 41 0
304059 으허어헝 [2] ㅇㅇㅎ(110.47) 12.02.20 45 0
304058 게임교육원같은데보다 지잡대 혹은 국립대 컴공가는게 훨씬 낫냐? [7] ㅁㄴㅇㄹ(222.114) 12.02.20 249 0
304057 방전이다 복룡갤로그로 이동합니다. 12.02.20 46 0
304056 이거 어떻게 하는지 좀 [10] 2222(202.30) 12.02.20 129 0
304055 해커 이야기 나와서 말 하는데 [2] 돼지맨갤로그로 이동합니다. 12.02.20 113 0
304053 아음.. 쬐금 슬프네.. 이 웹툰 본 횽들 많나.. [4] 쿄스케갤로그로 이동합니다. 12.02.20 71 0
304052 MASM32 쪼매 해본 형 있어? 질문 통맥갤로그로 이동합니다. 12.02.20 39 0
304051 넷북은 애플꺼 써도 상관 없다고 생각함 [1] 돼지맨갤로그로 이동합니다. 12.02.20 64 0
304050 나 아이폰 쓰는데 안드로이드로 바꾸고 싶은 단 하나의 이유... [1] Prographer갤로그로 이동합니다. 12.02.20 72 0
304049 아음.. 쬐금 슬프네.. 이 웹툰 본 횽들 많나.. [2] 쿄스케갤로그로 이동합니다. 12.02.20 72 0
304048 앱등이의현실어디감 [2] 복룡갤로그로 이동합니다. 12.02.20 76 0
304047 앱등이의현실 이거진짜임?ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ [9] 태연여신님갤로그로 이동합니다. 12.02.20 207 0
304046 크앙, 리눅스 다시 깔아야지 ㅡㅡ) 땡칠도사갤로그로 이동합니다. 12.02.20 49 0
304044 프겔 봇만들기 대회?? [6] 생각놀이갤로그로 이동합니다. 12.02.20 481 0
304043 [php]간단한 질문 호석갤로그로 이동합니다. 12.02.20 45 0
304042 형들, 프로그래밍관련 일하는거 좋아서 선택한거 아냐? [6] Prographer갤로그로 이동합니다. 12.02.20 151 0
304041 혹시 마이플랫폼 좀 아는 겔러들 나와보소 [8] SFCFS갤로그로 이동합니다. 12.02.20 102 0
304040 나 원래 눈팅 하던 종잔데 겜오토 이야기 나와서 하는말 [14] 42(119.201) 12.02.20 214 1
304039 공부한참하다가 하루쉬었는데 복룡갤로그로 이동합니다. 12.02.20 48 0
304036 문제나 하나 풀자. [4] 여성 가족부갤로그로 이동합니다. 12.02.20 80 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2