[파이썬 Projects]/<파이썬 딥러닝, 신경망>

[딥러닝] 인공 신경망(ANN)

기록자_Recordian 2024. 11. 19. 15:41
728x90
반응형
머신러닝 기반 분석 모형 선정

 

 

[머신러닝] 머신러닝 기반 분석 모형 선정

머신러닝 기반 분석 모형 선정   지도 학습, 비지도 학습, 강화 학습, 준지도 학습, 전이 학습 1) 지도 학습: 정답인 레이블(Label)이 포함되어 있는 학습 데이터를 통해 컴퓨터를 학습시키는 방법(

puppy-foot-it.tistory.com


주피터노트북에서 tensorflow gpu 사용하기
 

[문제 해결] 주피터노트북에 GPU 연결하기

GPU vs CPU출처: 챗GPT ◆ CPU (Central Processing Unit) - 특징 CPU는 범용 프로세서로, 다양한 작업을 처리하는 데 최적화되어 있습니다. 소수의 강력한 코어를 가지고 있어 다중 작업 처리에 적합합

puppy-foot-it.tistory.com


인공 신경망 (ANN; Artificial Neural Network)

 

◆ 개념

뇌에 있는 생물학적 뉴런의 네트워크에서 영감을 받은 머신러닝 모델로, 사람 두뇌의 신경세포인 뉴런이 전기신호를 전달하는 모습을 모방한 기계학습 모델이며, 딥러닝의 핵심이다.

인공 신경망은 다재다능하고 강력하고 확장성이 좋아서 아주 복잡한 대규모 머신러닝 문제를 다루는 데 적합하다.

입력값을 받아서 출력값을 만들기 위해 활성화 함수를 사용하며 인공 신경망의 목적은 가중치를 알아내는 것이다.

출처: 나무위키

 

 

◆ 인공 신경망의 대표적인 예

  • 구글 이미지: 수백만 개의 이미지 분류
  • 애플 시리: 음성 인식 서비스
  • 유투브: 수억 명에 이르는 사용자에게 영상 추천

◆ 역사

  • 1세대: 1943 ~ 1986년 (퍼셉트론 제안 / XOR 선형 분리 불가 문제 발생)
  • 2세대: 1986 ~ 2006년 (다층 퍼셉트론과 역전파 알고리즘 등장 / 은닉층을 통해 XOR 문제 해결 / 과적합 문제, 사라지는 경사 현장 문제 발생)
  • 3세대: 2006년 ~ 현재 (알파고와 이세돌 바둑 대결로 부각 / 딥러닝 활용 / 과적합 문제 및 기울기 소실 문제 해결)

◆ 구조
 
1) 퍼셉트론

  • 인간의 신경망에 있는 뉴런의 모델을 모방하여 입력층, 출력층으로 구성한 인공신경망 모델
  • TLU(threshold logic unit) 또는 LTU(linear thereshold unit)라고 불리는 조금 다른 형태의 인공 뉴런을 기반으로 함.
  • 입력과 출력이 이진값이 아닌 어떤 숫자이고, 각각의 입력 연결은 가중치와 연관
  • TLU는 먼저 입력의 선형 함수를 계산하고, 이 결과에 계단 함수를 적용.
  • 로지스틱 회귀와 거의 비슷하지만 로지스틱 함수 대신 스텝 함수 사용하며, 모델 파라미터는 로지스틱 회귀와 동일한 입력 가중치 w와 편향 b.
  • 구성요소: 입력값, 가중치, 순 입력함수, 활성화 함수, 예측값(출력값)
  • 문제점: XOR 선형 분리 할 수 없음 (다층 퍼셉트론으로 해결)

2) 다층 퍼셉트론(MLP; Multi-Layer Perceptrons)

  • 입력층과 출력층 사이에 하나 이상의 은닉층을 두어 비선형적으로 분리되는 데이터에 대해 학습이 가능한 퍼셉트론
  • 입력층, 은닉층, 출력층으로 구성하고 역전파 알고리즘을 통해 다층으로 만들어진 퍼셉트론의 학습 가능
  • 활성화 함수로 시그모이드 함수 사용
  • 문제점: 과대 적합, 기울기 소실
 

[딥러닝] 인공 신경망: 퍼셉트론, 다층 퍼셉트론

머신러닝 기반 분석 모형 선정 [머신러닝] 머신러닝 기반 분석 모형 선정머신러닝 기반 분석 모형 선정   지도 학습, 비지도 학습, 강화 학습, 준지도 학습, 전이 학습 1) 지도 학습: 정답인 레이

puppy-foot-it.tistory.com

 

◆ 활성화 함수

활성화 함수: 순 입력함수로부터 전달받은 값을 출력값으로 변환해 주는 함수. 노드에서 가중치를 곱해 더한 값을 변환하거나 압축하는 비선형 함수. 신경망이 데이터를 효과적으로 분리해 분류 작업을 수행할 수 있도록 돕는다.

활성화 함수가 없다면 은닉 층의 성능이 떨어지고 하나의 선형 회귀보다 좋지 않다.

계단함수, 부호함수, 선형함수, 시그모이드 함수, tanh 함수, ReLU 함수 등

 

<일반적인 활성화 함수>

이름 사용하는
일반적인 층
설명 참고
선형(linear) 출력 층 값을 그대로 둠 자주 사용하지 않음
로지스틱 출력 층 S자형 시그모이드 곡선 0과 1 사이로 값을 압축하며, 이진 분류에 주로 사용
하이퍼볼릭 탄젠트
(hyperbolic tangent)
은닉 층 tahn, -1에서 1 사이의 S자형 시그모이드 곡선 평균을 0에 가깝게 만들어 데이터를 중앙에 맞춤
렐루(ReLU) 은닉 층 음숫값을 0으로 만듦 시그모이드나 tahn 보다 빠른 활성화 함수로 그레이디언트 소실 문제를 완화하고 계산 비용이 저렴해 널리 사용
리키 렐루(Leaky ReLU) 은닉 층 음숫값에 0.01을 곱함 음숫값을 제거하지 않고 줄이는 렐루의 변형
소프트맥스 출력 층 모든 출력 노드를 더해 1.0이 되도록 만듦. 다중 분류에 유용하고 출력의 크기를 조정해 합을 1.0으로 만듦.

※ 회귀 문제일 경우 임의의 실수를 예측하므로 출력 층에 비선형 함수를 사용하지 않고 선형 활성화 함수 사용

 

1) 계단 함수 (step function) 

  • 임계값을 경계로 출력이 바뀌는 활성화 함수 
  • 입력이 0을 넘으면 1을 출력하고, 그 외에는 0을 출력하는 함수
  • 퍼셉트론에서는 활성화 함수로 "계단 함수"를 이용. 
  • 활성화 함수로 쓸 수 있는 여러 후보 중에서 퍼셉트론은 계단 함수를 채용
  • 활성화 함수를 계단 함수에서 다른 함수로 변경하는 것이 신경망의 중요한 포인트.

2) 부호함수

부호 함수는 특수함수 중 하나로, 어떤 실수의 부호를 출력하는 함수이다. 쉽게 말해 ∣x∣를 미분한 함수. 기호로는 sgnx로 쓴다.

 

3) 선형함수 (linear function)

선형 함수란 데이터의 관계가 서로 직선 형태를 띠는 함수를 의미

 

4) 시그모이드 함수

신경망에서는 가중치를 학습시키는데 있어 미분을 사용해야했기 때문에(오차역전파법의 원리) 활성화 함수로 계단함수를 사용할 수 없었다(계단 함수는 미분이 불가능). 또한, 계단함수는 0/1과 같은 극단적인 값을 전달하기 때문에 데이터의 정보를 손실시켰다.

따라서, 계단함수를 곡선의 형태로 변형시킨 형태의 시그모이드(sigmoid) 함수를 적용하게 되었다. 시그모이드는 우리가 흔히 알고 있는 로지스틱(logistic) 함수이다.
계단함수와 비교해보면, 시그모이드 함수는 선이 매끄럽기 때문에 입력에 따라 연속적인 실수값을 출력하는데 입력이 중요하면 큰 값을, 중요하지 않으면 작은값을 출력한다. 이처럼 시그모이드 함수를 이용하면 계단함수보다 데이터의 정보를 보존할 수 있다. 

 

[시그모이드 함수 단점]

- Gradigent Vanishing : 층이 많아질수록 오차역전파 수행시 기울기가 소실되는 문제가 발생한다. 
- 함수값 중심이 0이 아니다(non-zero centered) : 입력값이 항상 양수이기 때문에 가중치에 대한 기울기(∂L∂w)가 항상 양수 또는 음수가 되어 학습이 잘 안될 수 있다. (zigzag 문제) 
- exp( ) 연산으로 시간이 오래 걸린다. 

 

5) tanh 함수

시그모이드 함수값의 중심을 0으로 맞추기 위해 개선된 함수로, 결과값이 (-1, 1) 사이이면서 양수와 음수가 나오는 비중이 비슷하기 때문에 zigzag 현상이 덜하다. 하지만, 여전히 기울기 소실문제가 있어서 가중치 학습이 중단되게 된다. 또한 exp( ) 연산이 더 많아서 시간이 오래 걸린다. 

 

6) ReLU 함수(rectified linear unit)

은닉 노드에서 출력된 음숫값을 모두 0으로 만든다. 즉, 가중치와 입력을 곱하고 편향을 더한 값이 음수가 되면 렐루 함수가 0으로 바뀐다. (만약 양수이면 양수 그대로 출력)
훈련 속도와 그레이디언트 소실 문제를 완화하기 때문에 신경망과 딥러닝의 은닉 층에 널리 사용.

※ 그레이디언트 소실: 편도함수 기울기가 작아지면서 너무 일찍 0에 가까워져 학습이 중지되는 현상


케라스(Keras)

 

케라스는 신경망 구축, 훈련, 평가, 실행을 목적으로 설계된 멋지고 간결한 고수준 API이며, 아주 다앙햔 신경망 구조를 만들 수 있을 만큼 유연하고 표현력이 뛰어나다.

 

텐서플로의 문제를 해결하기 위해 보다 단순화된 인터페이스를 제공하는 케라스가 개발되었다. 케라스의 핵심적인 데이터 구조는 모델이다.

원래는 신경망 구축을 위한 고수준 API였으나 현재는 TensorFlow의 일부로 통합되었다 (tf.keras). 신경망 모델을 쉽게 구축하고 훈련할 수 있도록 사용자 친화적인 인터페이스를 제공한다. Keras는 신속한 실험과 프로토타입 제작에 적합하다.

케라스에서 제공하는 시퀀스 모델로 원하는 레이어를 쉽게 순차적으로 쌓을 수 있으며, 다중 출력 등 더 복잡한 모델을 구성할 때는 케라스 함수 API를 사용하여 쉽게 구성할 수 있다. 이처럼 케라스는 딥러닝 초급자도 각자 분야에서 손쉽게 딥러닝 모델을 개발하고 활용할 수 있도록 직관적인 API를 제공한다.

 

◆ 장점

케라스는 일반 사용 사례에 최적화된 간단하고 일관된 인터페이스를 제공한다. 사용자 오류에 대해 명확하고 실용적인 피드백을 제공하며, 케라스의 구성 요소는 모듈 형태로, 각 모듈이 독립성을 갖기 때문에 새로운 모델을 만들 때 각 모듈을 조합해 쉽게 새로운 모델을 만들 수 있다.

 

◆ 단점

모듈화의 한계로 복잡한 프로젝트에 구현 범위가 다소 좁은 편이다. 또한 케라스는 다양한 백엔드 위에서 동작하기 때문에 어떤 오류가 발생했을 때 케라스 자체의 문제인지, 백엔드 언어의 문제인지 특정하기 어려운 단점이 있다.

 

 

[딥러닝] 케라스로 다층 퍼셉트론 구현하기

인공 신경망 [딥러닝] 인공 신경망(ANN)머신러닝 기반 분석 모형 선정  [머신러닝] 머신러닝 기반 분석 모형 선정머신러닝 기반 분석 모형 선정   지도 학습, 비지도 학습, 강화 학습, 준지도 학

puppy-foot-it.tistory.com

 


다음 내용

 

[딥러닝] 심층 신경망 훈련

인공 신경망 [딥러닝] 인공 신경망(ANN)머신러닝 기반 분석 모형 선정  [머신러닝] 머신러닝 기반 분석 모형 선정머신러닝 기반 분석 모형 선정   지도 학습, 비지도 학습, 강화 학습, 준지도 학

puppy-foot-it.tistory.com


[출처]

수제비. 빅데이터 분석기사 필기

개발자를 위한 필수 수학

핸즈 온 머신러닝

위키백과

https://syj9700.tistory.com/37

https://nongnongai.tistory.com/51

728x90
반응형