디시인사이드 갤러리

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

갤러리 본문 영역

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

생각놀이갤로그로 이동합니다. 2012.02.18 14:52:25
조회 568 추천 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 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48749 65
2904416 뽐¯뿌' ▵게▫시‥글▹ „써′주‘시¨면´ ‛1·건‵당´ ·1▵-•5‗ _만⫶원‚ º드¯립‗니•다∘.′ ▵불◦법` ‟이;상◃한`거‗ °절◃대„ ·아‵님▵.- „ ᄏㅏㅌᅩᆨ  ⒸⒹ 23 \\뽐뿌$(211.36) 05:48 2 0
2904415 kqueue와 epoll의 시스템 아키텍처 및 설계 철학 비교 나르시갤로그로 이동합니다. 05:46 3 0
2904414 뽐⫶뿌º ′게_시‸글- „써▵주´시_면‶ ¨1-건▵당' ′1‘-'5´ ″만⫶원⫶ ‛드º립‛니‟다`.“ ‗불'법‘ ▵이∘상◦한∶거' ´절‶대' ¨아∘님‶.‸ - ヲㅏ토ァ  ℂⅅ ➁➂ \\뽐뿌$(211.36) 05:43 1 0
2904410 33살 중소3년차 똥통인생 이스펙으로 중견입사 가능하냐..? ㅇㅇ(118.235) 04:59 12 0
2904408 지잡대 졸업 30살인데 학벌 세탁원하는데 학사편입vs대학원 ㅇㅇ(203.232) 04:30 14 0
2904407 Claude cli 오늘 첨 써봤는데 개발자 왜 필요하냐 프갤러(101.235) 04:26 16 0
2904389 Clair.IO.Poller: 이번에 설계했다가 gg친 API ㅋㅋ 나르시갤로그로 이동합니다. 02:59 31 0
2904375 진짜 프로그래머들 ㅈㄴ부럽다 [2] ㅅ스맨갤로그로 이동합니다. 02:18 64 0
2904367 코딩 걍 첨부터 막히는데 어캄 [2] ㅅ스맨갤로그로 이동합니다. 01:54 46 0
2904364 자바 언어 좋지.. 추억과 낭만이 깃들인 언어 ㅋㅋ [1] 나르시갤로그로 이동합니다. 01:45 38 0
2904363 거래소 api들 잘 다루고 싶으면 뭐 부터 배우면 될까요 선배님들 [3] 프갤러(114.204) 01:43 35 0
2904362 7번국도 드라이빙 때 좋을만한 브금 chironpractor갤로그로 이동합니다. 01:31 17 0
2904359 0x [1] 루도그담당(58.233) 01:22 27 0
2904358 접시 ㅇㅅㅇ [6] 헤르 미온느갤로그로 이동합니다. 01:12 46 0
2904357 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 01:09 20 0
2904356 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 01:08 28 0
2904324 오픈소스 프로젝트를 하나 해볼까 [12] 에이도비갤로그로 이동합니다. 00:02 87 0
2904320 고 언어 음 좋지 나쁘지 않고 효율적이고 음 근데 [6] 프갤러(110.8) 11.23 55 0
2904316 www.basic4mcu.com 11월까지 서비스 종료 발명도둑잡기(118.216) 11.23 18 0
2904313 카리나가 맛집이넹 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.23 54 0
2904309 그러고 보니 프갤에서 고랭 팬은 못본거 같은데 [3] chironpractor갤로그로 이동합니다. 11.23 46 0
2904303 클라우드 엔지니어 희망하는데 [2] 프갤러(118.235) 11.23 33 0
2904298 cursor 대체할만한거 있어? [2] ㅇㅇ(124.48) 11.23 45 0
2904295 개발만한 취미가 없는 것 같음 프갤러(61.73) 11.23 57 0
2904294 살면서 잘 한 일... 후배한테 노트북 키스킨 딱 맞는 카라스스킨 5천원 넥도리아(220.74) 11.23 14 0
2904291 에구궁.. 나님 일욜밤까지 모임하구와서 배불러양 [2] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.23 49 0
2904289 웹디자인은 이미 AI때문에 망한듯 [1] 프갤러(220.70) 11.23 45 0
2904285 왜 극좌들은 하나같이 왕따 당하는걸까? [4] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.23 44 0
2904266 인공지능 댓글 검사기 발명도둑잡기(118.216) 11.23 27 0
2904265 배달기사 레전드네 진짜; [7] 루도그담당(58.233) 11.23 73 0
2904264 [긴급속보] 한국 연구진이 노벨상 근거를 뒤집자 현재 난리난 천문학계 발명도둑잡기(118.216) 11.23 28 0
2904262 왕따재명 안쓰럽네 ㅠ ㅅ ㅠ [2] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.23 45 1
2904261 소프트웨어 이름으로 이렁 거 어때? [4] 나르시갤로그로 이동합니다. 11.23 53 0
2904259 긴sql도 셸스크립트도 보기 싫은데 [10] 슈퍼막코더(116.64) 11.23 65 0
2904256 이거 이직 중인데 두개중 어디가야하노 [2] 프갤러(58.231) 11.23 40 0
2904255 베린이평가좀 [1] ㅇㅇ(39.7) 11.23 41 0
2904247 간철수도 어셈블리어한다는데 [2] 타이밍뒷.통수한방(1.213) 11.23 61 0
2904245 국비조언좀요 [2] 프갤러(220.86) 11.23 56 0
2904244 어셈 짜는 중인데 헷갈린다 이기 [12] 루도그담당(58.233) 11.23 88 0
2904243 폴리글랏 툴체인이 나오면 프갤에 평화가 오려나? [10] chironpractor갤로그로 이동합니다. 11.23 65 0
2904242 베이스 ㅍㅌㅊ? ㅇㅇ(203.232) 11.23 40 0
2904240 나 불렀서? ㅇㅅㅇ [6] 프갤러(49.165) 11.23 62 0
2904237 탑 클라스 명문대 진학 퍼펙트 합격 가이드!T 프갤러(121.142) 11.23 40 1
2904232 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ [3] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.23 60 0
2904231 이제 러스트 빠돌이 프갤에 안 오겠군 ㅋㅋ [1] 나르시갤로그로 이동합니다. 11.23 46 0
2904230 언어 선택권도 수저순일텐데 [2] chironpractor갤로그로 이동합니다. 11.23 61 0
2904229 파이선 얼마나 개떡 같은데 ㅎㅎ [10] 나르시갤로그로 이동합니다. 11.23 66 0
2904226 언어에 자아의탁하는거? 뭐 그럴수 있음 [16] 박민준갤로그로 이동합니다. 11.23 138 2
2904222 좇센 노무 살기좋은 나라이긴해 타이밍뒷.통수한방(1.213) 11.23 33 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2