Home 멋쟁이 사자처럼 AI Shcool 10주차
Post
Cancel

멋쟁이 사자처럼 AI Shcool 10주차

7월 4일

  • ML 마무리
  • 이진 분류에서의 평가
    • 정확도 (Accuracy)
    • 혼동 행렬 (Confusion Matrix)
    • 성능 점수(F1 Score)
    • AUC-ROC
  • DL 파트 시작
  • ANN(Artificial Neural Network)
  • 인간 개입의 여부
    • ML: 인간이 직접 특징을 도출할 수 있게 설계
    • DL: 스스로 일정 범주의 데이터를 바탕으로 공통된 특징을 도출
  • 퍼셉트론(Perceptron)
    • XOR 문제 -> 복층 퍼셉트론으로 해결
  • 순전파(forward propagation) / 역전파(back propagation)
    • 최적화된 가중치를 찾아가며 학습하는 방식 -> 오차가 최소가되는 방향
  • 활성함수(Activation Func.)
    • 가중치 생성
    • 선형 결합을 비선형(또는 선형) 결합으로 변환하는 역할
  • Gradient Vanishing (기울기 소실): 역전파 과정에서 입력층으로 갈수록 기울기가 점차 작아지는 현상
  • Gradient Exploding (기울기 폭주): 기울기가 점차 커지더니 가중치들이 비정상적으로 큰 값이 되며 발산하는 현상
  • 딥러닝의 학습과정
    • 출력값과 실제값을 비교해, 그 차이를 최소화하는 가중치(W)와 편향(bias)의 조합 찾기
    • 가중치는 오차를 최소화하는 방향으로 모델이 스스로 탐색(역전파)
    • 오차 계산은 실제 데이터를 비교해, 손실함수를 최소화하는 값 탐색
    • 옵티마이저로 경사하강법 원리를 이용
  • 손실함수(Loss Func.)
    • 실제값과 예측값의 차이를 수치화해주는 함수
    • Crossentropy는 값이 낮을수록 예측을 잘한것임
    • 분류
      • 이항분류: BinaryCrossentropy (이진 엔트로피)
      • 다항분류
        • CategoricalCrossentropy (교차 엔트로피)
        • CategoricalHinge (범주형 힌지 손실)
        • Hinge (힌지 손실)
        • KLDivergence (Kullback-Leibler 발산 손실)
      • 회귀
        • CosineSimilarity (코사인 유사도)
        • Huber (Huber 손실)
        • LogCosh (예측 오차의 쌍곡선 코사인의 로그)
        • MeanAbsoluteErr
        • MeanAbsulutePercentageErr
  • 옵티마이저 (Optimizer)
    • 데이터와 손실함수를 기반으로 모델이 업데이트되는 방식
  • 경사하강법 (Gradient Descent)
    • 가중치를 움직이며 최솟값을 찾는 방법 (최적화 방법)
  • 확률적 경사하강법(SGD, Stochastic Gradient Descent)
    • 랜덤하게 추출한 일부 데이터에 대해 가중치를 조절
    • 속도는 개선되었지만, 극소 문제(loval minima)가 남아있음
  • 딥러닝 과정
    • 층 구성 keras.sequential()
    • 컴파일 model.compile()
    • 요약 model.summary()
    • 학습 model.fit()
    • 예측 model.predict()
    • 평가 model.evaluate()
  • ANN(Artificial Neural Network)
    • 입력층(Input) -> 은닉층(Hidden) -> 출력층(Output)
  • DNN(Deep Neural Network)
    • ANN을 기반으로 은닉층을 많이 늘림
  • 출력층에서의 활성화 함수
    • 분류: Sigmoid, Softmax
    • 회귀: 항등함수(identity func.)
  • 밀집층(Dense layer, FC)
    • 모든 뉴런에 연결되는 계층
    • 과적합 확률이 높아, 드롭아웃(Dropout) 기법을 이용
  • loss: categorical_crossentropy = 원핫 벡터 라벨
  • loss: sparse_categorical_crossentropy = 정수형 라벨

7월 5일

  • Tensorflow 회귀 예제
  • 트리계열 알고리즘에서는 스케일링이 성능에 도움이 되지 않는 편임
  • validation_split을 비율로 지정해 사용하는 경우, 계층 추출이 불가능함
  • 정형 데이터에서 분류 실습 (Pima)
  • DL 네트워크 시각화
  • 합성곱
  • 분류: 엔트로피
  • 회귀: MSE, MAE
  • loss: 훈련 중 모델이 얼마나 정확한지 측정
  • metrics: 훈련 및 테스트 중에 모델이 평가할 메트릭
  • 문제의 종류(분류/회귀)에 따라 loss, metrics 종류가 달라짐
  • numpy
    • 명시적 루핑, 인덱싱 등이 없다 -> 벡터화
    • 산술 연산뿐만 아니라, 논리적, 비트 단위, 기능적 등의 모든 연산이 브로드캐스트 방식으로 동작

7월 6일

  • 이력서 특강
  • Git 특강

7월 7일

  • 늦잠.. 오후 출석했음
  • OOP (객체 지향 프로그래밍)
    • 복잡성을 관리하기 위함
  • 주요 개념
    • class와 instance
    • fields와 methods
    • superclass, subclass, polymorphism
    • responsibility, collaboration
  • class Name vs. class Name(상속)
    • 후자는 확장한다, 상속한다라는 의미
  • 생성자는 클래스마다 생성하는것이 좋음
  • 우연한 중복과 진짜 중복을 구별할 수 있어야 함
  • ABC (Abstact Base Class)

7월 8일

  • 기본 자료구조 & 알고리즘 특강
  • 스니펫을 만드는것이 중요함
  • 입출력을 먼저보고 문제를보는것이 좋음
  • DFS(깊이 우선 탐색) -> Stack
  • BFS(넓이 우선 탐색) -> Que
  • self는 인스턴스의 메모리 영역
  • 과제
    • 과제 1 : 이해가 안되시는 부분은 손으로 직접 써보세요.
    • 과제 2 : 값의 인덱스를 반환하는 find만 구현을 직접 해보세요.

요약

딥러닝 파트를 시작했는데, 모델의 층 배치와 규모를 어떻게 설계하고 어떤 활성함수를 사용해야할지 잘 모르겠다..
머신러닝을 할 때는, 주어진 문제에 맞는 모델(알고리즘)을 선택해 사용하면 됬는데, 딥러닝에서는 층을 쌓아야해서 너무 헷갈리는거 같다..
다양한 딥러닝 모델들을 보면서 익힐 필요가 있을꺼 같다.
오랜만에 자료 구조와 알고리즘을 해봤다. 학부 시절 생각이 많이나는 시간이었다. 물론 아직도 졸업을 안해서 학부생이긴하지만…
시간을 내서 복습도하고 스니펫을 만들 필요가 있어 보인다.

This post is licensed under CC BY 4.0 by the author.

22년 7월 1주차 주간 회고

Stacking Ensemble 모델

Comments powered by Disqus.