[ML] 주요 머신러닝 알고리즘 - (5) 인공신경망 모형

전도운·2024년 9월 1일
0
post-custom-banner

인공신경망(Artificial Neural Network) 모형

  • 인간의 뉴런의 자극전달 과정에 아이디어를 착안하여 발생한 머신러닝 알고리즘이다.

    • [퍼셉트론(Perceptron)] 신경망의 뉴런과 대응되는 객체로, inputs / weights / transfer function / activation function로 구성되며 퍼셉트론이 여러 개 존재하여 한 퍼셉트론의 출력값이 다른 퍼셉트론의 입력값이 되는 형태를 다층 퍼셉트론(Multi Layler Perceptron)이라고 한다.

    • [활성함수(Activation Function)] 퍼셉트론 내의 출력을 새롭게 변환하여 은닉층(Hidden layer)을 의미있게 쌓아주는 역할을 한다.

      활성함수를 조금 쉽게 이해해보자면, 퍼셉트론 내에서 반환되는 값은 지나치게 크거나 지나치게 작을 수도 있고 그 의미를 해석하기 쉽지 않은데

      활성함수를 시그모이드 함수로 설정하면 모든 반환값이 0과 1 사이이므로 확률적인 의미부여를 할 수 있다는 것이다.

      다만 시그모이드 함수는 기울기가 1 미만으로 신경망이 깊어지면 점차적으로 가중치가 사라지는 기울기 소실이 발생하기 때문에 이에 대한 대안으로 렐루(Relu)계열의 함수가 선호되고 있다.

    • [오차역전파(BackPropagation)] Output layer에서 에러의 변화량을 앞선 layer로 전달하는 기능을 한다.

      인공신경망모형에서 도출된 예측치와 실제치의 차이(오차)에 대해서 각 퍼셉트론의 기여도를 계산한 후 이를 가중치에 반영하여 점차적으로 모형의 정확도를 높여나간다.

      오차역전파는 모델의 정확도를 높이는 장점이 있으나 이를 위해 상당히 많은 메모리를 차지하는 등 시스템 성능에 많이 의존하게 된다.

  • 딥러닝(Deep Nueral Network)과의 차이점

    • 딥러닝과 인공신경망은 구조가 유사하나 깊이와 복잡성에서 차이가 있다. 인공신경망에는 은닉층이 없거나 한개 있는 반면, 딥러닝에는 두 개 이상의 은닉층이 존재한다.

      당연히 딥러닝이 인공신경망에 비해 모델이 복잡하고 학습 소요 시간도 오래 걸린다.

  • 장점

    • 인공신경망 구조에서 각 뉴런은 하나의 독립 프로세스이므로 병렬 처리에 유리하다.
    • 적용 가능한 문제 및 데이터 형식이 광범위, 즉 입력변수의 형태에 의존적이지 않음
    • 복잡한 데이터 집합에 내재된 패턴을 찾아내는 능력 존재
    • 많은 노드에 정보가 분산되어있으므로 일부 노드에서 결함이 발생하더라도 전체 시스템에 큰 영향을 주지 않음
  • 단점

    • 블랙박스 모형이므로 분류나 예측 결과만을 제공할 뿐 어떻게 그런 결과가 나왔는지에 대해 사용자가 알기 어렵다.
    • 복잡한 학습과정을 거치기 때문에 최적의 모형을 구축하는 데 많은 시간이 소요될 수 있다.
    • 은닉층의 과다 설정은 학습 데이터 집합과 거의 일치하는 모형을 유도해낼 수 있으므로 과적합 문제를 발생시킬 수 있다.
  • 라이브러리 및 작동 코드

    • sklear의 MLP 관련 라이브러리로 사용 가능하나, 은닉층을 무수히 많이 만들어내는 딥러닝을 위해서는 TensorFlow, Keras 등 별도 모듈이 필요하다.
      from sklearn.neural_network import MLPClassifier
  • 주요 파라미터

    hidden_layer_sizes=(100,) 은닉층 내 뉴런의 개수
    activation='relu' 활성화함수, {'identity', 'logistic', 'tanh', 'relu'}
    solver='adam' 가중치 최적화에 이용하는 알고리즘, 'lbfgs': quasi-Newton Method, 'sgd': stochastic gradient descent, 'adam': stochastic gradient-based optimizer
    alpha=0.0001 L2 규제의 강도
    learning_rate='constant' 학습률, 'constant' 일정, ‘invscaling’ 학습률이 점차적으로 감소, ‘adaptive’ ‘learning_rate_init’에 맞게 조정
    max_iter=200 최적화 수렴 시까지 반복하는 최대횟수

profile
의미 있는 한걸음을 추구합니다.
post-custom-banner

0개의 댓글