선릉역 1번 출구

[adventofcyber2023] - Day_14_Machine learning The Little Machine That Wanted to Learn 본문

Project/Program

[adventofcyber2023] - Day_14_Machine learning The Little Machine That Wanted to Learn

choideu 2023. 12. 15. 19:00

Story: Mcskidy가 파이프라인의 문제를 machine learning 과정을 통해 해결하고자 함

 

목표: 머신러닝에 대해 이해하기, 기본 기계 학습 구조 및 알고리즘 이해하기, 신경망을 사용해 예측해보기

 

1. Introduction

- AI와 ML 시스템은 10년 동안 엄청난 발전을 이룸

  • genetic algorithm : "적자생존", 자연 선택과 진화의 과정을 모방하는 것을 목표로 함
  • particle swarm : 새들이 특정 지점에서 무리지어 모여드는 과정을 모방하는 것을 목표로 함, 입자 떼를 만들어 모든 입자를 최적의 답의 그룹화 지점으로 이동시키는 것을 목표로 함
  • neural networks : 뉴런이 뇌에서 작동하는 과정을 모방하는 것을 목표로 함. 뉴런은 다양한 입력을 받고 다음 뉴런으로 전송되기 전 변형됨

2. 신경망의 학습 스타일

  • 지도 학습
    • 신경망이 제공하고자 하는 답변을 제공함
    • 답을 요청한 다음, 해당 답변이 정답에 얼마나 가까웠는지에 대한 피드백 제공
    • 해당 학습 스타일 적용을 위해서는 정답을 알고 있는 데이터 세트가 필요
  • 비지도 학습
    • 수동적인 접근 방식을 취하고 신경망이 자체 작업을 수행하도록 함
    • 주요 목표는 신경망이 "흥미로운 것"을 식별하도록 하는 것

3. 신경망의 기본 구조

- 신경망은 다양한 노드로 구성됨

레이어 특징
입력 레이어 신경망의 첫 번째 레이어로 단일 데이터 입력을 수신한 다음 숨겨진 레이어로 전달됨
출력 레이어 신경망의 마지막 레이어로 숨겨진 계층에서 수신된 출력을 네트워크에서 보냄
숨겨진 레이어(hidden layer) 신경망의 입력 레이어와 출력 레이어 사이에 있는 노드 레이어
많은 레이어를 추가해서 심층 신경망을 만들 수 있음

- 세부 특징

  • 입력 값은 직접 추가되지 않고 input이 해당 output에 얼마나 기여하는지에 대한 가중치가 곱해짐
  • 덧셈의 출력은 직접적으로 전달되지 않고 먼저 활성화 함수로 불리는 것에 입력됨 -> 뉴런이 활성화될지 여부를 결정함

4. Feed-Forward Loop

- 우리가 네트워크를 통해 데이터를 전송하고 반대쪽에서 답을 얻는 방법

- 네트워크가 한번 훈련되면 단순히 네트워크로부터 답을 받기를 원함

  • 모든 입력 정규화 : 신경망이 답을 결정하는 데 가장 중요한 입력을 결정할 수 있도록 해당 입력을 정규화해야함
정규화를 하지 않은 경우:무게는 1kg에서 10kg까지의 값을 가질 수 있습니다.길이는 20cm에서 100cm까지의 값을 가질 수 있습니다.무게는 길이에 비해 상대적으로 큰 값의 범위를 가집니다.모델이 이 데이터를 학습할 때, 무게가 길이보다 높은 가중치를 갖게 될 수 있습니다. 결과적으로, 모델은 무게에 민감하게 반응하게 될 것입니다.

정규화를 한 경우:무게를 0에서 1 사이의 범위로 변환하고, 길이를 마찬가지로 0에서 1 사이의 범위로 변환합니다. 이는 최소-최대 스케일링을 사용하여 수행될 수 있습니다.모델이 이제 각 특성을 동등하게 취급할 수 있습니다. 무게와 길이는 더 이상 서로 다른 범위에서 온 데이터로 인해 왜곡되지 않습니다. 따라서 모델은 두 특성 모두에 대해 고르게 학습할 수 있게 됩니다.
  • 입력 레이어의 노드에 입력
  • 네트워크를 통해 데이터 전파 : 각 노드에서 모든 입력을 통해 활성화 함수를 실행하여 노드의 출력을 얻음
  • 네트워크의 출력 읽기 : 노드로부터 출력을 받음

5. 역전파

- 네트워크로부터 답변을 받은 후 정답에 얼마나 가까웠는지를 알려주는 단계

  • 수신된 출력과 예상 출력의 차이 계산
  • 노드 가중치 업데이트 : 계산된 차이를 사용해 출력 레이어의 노드에 각 입력의 가중치를 업데이트함
  • 차이점을 다른 레이어로 다시 전파함

- 모든 가중치가 업데이트되면, 네트워크를 통해 또 다른 데이터 샘플을 실행하고 해당 프로세스를 반복하여 네트워크를 훈련시킴

 

6. 데이터 세트 분할

- over training은 신경망에서 문제이므로, 답이 아닌 프로세스를 학습하도록 해야함

- 데이터 세트를 분할하여 훈련 데이터에 대해 답을 도출하도록 트레이닝된 건지 아니면 답을 도출하기 위한 프로세스가 학습된건지 확인

  • train data : 훈련에 사용하는 데이터(70~80%)
  • validation data : 네트워크 훈련을 검증하는 데 사용(10~15%)
  • test data : 네트워크의 최종 성능을 계산하는 데 사용함(10~15%)

 

+ challenge

Comments