1강.신경망의 개요
Last updated
Last updated
기호 인공지능
연결주의 인공지능 → 배울거
인공 신경망
인간과 동물의 두뇌를 구성하는 신경 시스템의 원리를 바탕으로 설계된 계산 시스템
1943년 임계치 논리 라는 알고리즘을 바탕으로 한 신경망 계산 모델
1949년 도널드 헵이 헵의 학습 이론 제시
1957년 프랭크 로젠블이 퍼셉트론 학습 모델 제안 ?
마크 1 퍼셉트론
당시에 큰 관심 끔
당시에 마빈 민스카이 는 한계를 지적함 (1969년) XOR도 해결 못한다 해서 찬물을 끼얹음
1974년 1986년 폴 워버스 , 데이비드 등에 의해 다층 퍼셉트론 구조의 학습 방법 발표됨
역전파 알고리즘 → 근간이됨
신경망의 층과 표현력
한개의 층만으로 인식할때
인식율이 떨어짐
여러개의 층으로 인식할때
중간에 있는게 뉴런역할
중간층에 있는것 덕분에 인식율이 더 높아짐
많은 층으로 구성하면 더욱 높은 차원의 표현 가능함
→ 심층 신경망
딥러닝은?
심층 신경망을 학습하기 위해 활용되는 기계학습 알고리즘
데이터가 많이 필요함
불안정한 경사 문제
과적합 문제
방대한 계산량
인공 뉴런 (빨간 박스가 뉴런역할)
u라는 입력을 뭔가 조건을 거쳐서 출력해줌 활성함수가
0보다 작으면 출력을 억제하고 0보다 크면 출력을 내도록 설계함
저 바이어스에 따라 활성함수를 거칠때 활성화 되는지 안되는지 조정됨
출력이 -0.5 인데 b가 1이면 0.5로 출력되니까 활성화 되겠지
계단함수
미분이 안되는 한계로 초기에나 쓰고 안쓰는 함수
시그모이드 함수
S자 형태라 미분가능함 → 미분이 가능하다는건 매우 유용함
층의 깊이가 깊어지면 경사 소멸이라는 문제가 생긴다함
대표는 로지스틱 함수
ReLU
0일때 미분불가
Dying ReLU 죽어있는 상태의 뉴런이 된다?
ReLU의 변형
Leaky ReLU
PReLU
GELU
Swish
입력층에서 출력층 방향으로 뉴런 층의 연결이 이루어지는 구조
하나의 층으로 구성됨
지도학습 방식
입력과 레이블(출력)
학습 대상 파라미터
입력이 뉴런에 전달되는 연결의 가중치(W)
바이어스(b)
퍼셉트론의 학습
파라미터 초기화
모든 학습표본을 대상으로 파라미터 업데이트 반복
피셔의 붓꽃 데이터 집합
실습 프로그램 구성
prepare_data(target)
특징 : 꽃잎의 길이와 폭
레이블 : target 에 지정된 종류의 붓꽃이면 1 그외면 0
step(x)
단위 계단 함수 : 0이상이면 1 그렇지 않으면 0
visualize(...)
결과의 그래프를 출력하는 시각화 함수
파라미터
net : 학습된 퍼셉트론
x,y : 특징 및 레이블의 배열
multi_class : 3개 이상의 클래스로 분류하는 경우 true
labels : 클래스 레이블 리스트
class_id : 클래스 이름을 출력할 스트링 리스트
colors : 클래스를 구분할 색상 리스트
xlabel, ylabel : x,y 축에 표시할 레이블
legend_loc : 범례를 표시할 위치
class Perceptron
클래스 선언
퍼셉트론 객체를 만들기 위한 클래스
인스턴스 변수
self.dim : 입력층 입력의 수
self.activation : 활성함수
self.w : 가중치
self.b : 바이어스
메서드 목록
init : 초기화
printW(self) : 가중치 및 바이어스 값 출력
predict(self,x) : 입력표본 x에 대한 퍼셉트론의 출력
fit(self, X, y, N, ephocs, eta=0.01) : 주어진 학습표본 집합을 이용해 퍼셉트론 객체를 훈련함
라이브러리
matplotlib.pyplot : 시각화를 하기위한 함수들이 제공됨
numpy : 파이썬에서 많이 사용됨 여러 수학적인 계산
sklearn.datasets : 여러 데이터 제공
3 : 0부터 3까지 있는데 2부터 끝까지(3까지) 뽑아서 슬라이스 함
5 : target 엔 0, 1, 2 값이 있음 (setosa 부터 0)
10 : 레이블값이 타겟과 같으면 1 true 틀리면 0 false
7,8 : 난수를 만들어서 초기화
활성함수식 사용함
이제 섞고 반복시켜서 학습 시킴
loss 값은 0에 가까워야 정확함
데이터의 최소 최대 범위를 좌표값으로 나타냄
가로 꽃잎길이 세로 꽃잎의 폭
어느 부분이 setosa에 포함되는지 범위를 볼수있음
이제 훈련을 시키고 시각화를 시킴
가중치의 초기값이 달라서 매번 실행할 때마다 좀 다를수 있음
분류는 잘 되는데 경계의 형태는 좀 달라짐
퍼셉트론은 단위 계단 함수를 사용하기 때문에 일반화 오류가 발생할 여지가 크다
인공신경망은 인간과 동물의 두뇌를 구성하는 생물학적 신경 시스템의 원리를 바탕으로 설계된 계산 시스템이다
신경망을 많은 수의 층으로 구성하면 더욱 높은 차원의 표현을 할 수 있다
딥러닝은 심층 신경망을 학습하기 위해 활용되는 기계학습 알고리즘이다
기본적인 뉴런의 구조는 다수의 입력이 각각 가중치를 적용하여 전달되면 이를 합산한 후 활성함수를 거쳐 출력을 만들어 내는 형태이다
일반적인 활성함수는 비선형 특성을 갖는 함수이며 입력이 0보다 작으면 출력을 억제하고 0보다 크면 출력을 내는 역할을한다
피드포워드 신경망은 입력층에서 출력층방향으로 뉴런 층의 연결이 이루어지는 구조이다
단층 퍼셉트론은 특정 공간을 선형 결정경계로 분할할 수 있다
아래와 같은 수학문제가 나올수도 있다