선릉역 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:00Story: 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
'Project > Program' 카테고리의 다른 글
Comments