AI Tech 1주차 - DAY 2

YeonJu Kim·2021년 8월 5일
0

Boostcamp AI Tech 2nd

목록 보기
2/13
post-thumbnail

3. 경사하강법

미분이란?

  • 변화율의 극한, 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구. 최적화에서 많이 활용한다
  • 함수 f의 점 (x, f(x))에서의 접선의 기울기
  • python sympy 라이브러리의 diff로 미분을 계산할 수 있다

경사상승법, 경사하강법

  • 접선의 기울기의 크기에 상관 없이, 함수값을 증가시키고 싶을 때는 미분 값을 더하고, 감소시키고 싶을 때는 미분 값을 뺀다.
  • 경사상승법 : 목적함수를 최대화
    경사하강법 : 목적함수를 최소화 (함수의 극소값)
  • 경사상승/하강법은 극값에 도달하면 미분값이 0 이므로 더 이상 업데이트가 되지 않고 목적함수 최적화가 자동으로 끝나게 된다.

변수가 벡터인 경우 ?

  • 다변수 함수의 경우, 각 변수별 편미분을 계산한 gradient 벡터로 경사상승/하강법을 사용한다.
    f=(x1f,x2f,...,xdf)(x1f(x)=limh>0f(x+hei)f(x)h\nabla f = (\partial_{x1}f, \partial_{x2}f, ...,\partial_{xd}f)\\ (\partial_{x1}f(x) = \lim_{h->0}\frac{f(x+he_i)-f(x)}{h}
    ( eie_i = ii번째 값 1, 나머지는 0인 단위벡터)
    f\nabla f를 활용해, 수직선 상이 아닌, d차원 공간에서 vector에 적용되는 경사하강법을 계산한다.

그래디언트 벡터

  • 임의의 점 (x, y)에서 - 방향으로 따라가면, f(x, y)의 극소점으로 흐르게 된다
  • gradient 벡터 f(x,y)-\nabla f(x,y)는 각 점 (x, y)에서 가장 빨리 감소하는 방향으로 흐른다.

    등고선(contour)

Assignment

  • python, string, regex

구현

#######################
# Test Processing I   #
#######################

import re

def normalize(input_string):
    """
     인풋으로 받는 스트링에서 정규화된 스트링을 반환함
    * 모든 단어들은 소문자로 되어야함
    * 띄어쓰기는 한칸으로 되어야함
    * 앞뒤 필요없는 띄어쓰기는 제거해야함
    """
    input_string = input_string.lower().split(' ')
    input_string = [i for i in input_string if i != '']
    normalized_string = ' '.join(input_string)
    return normalized_string


def no_vowels(input_string):
    """
    인풋으로 받는 스트링에서 모든 모음 (a, e, i, o, u)를 제거시킨 스트링을 반환
    """
    no_vowel_string = re.sub('a|e|i|o|u|A|E|I|O|U', '', input_string)
    return no_vowel_string

결과

피어세션

  • 생각보다 첫 주차에 들어야 할 강의가 많은데, 입과 전 pre-course에서 공개되었던 강의라 그런지 팀원들 모두 과제를 우선으로 하고, 필요하다면 강의를 듣는 형식으로 소화하자고 의견을 통일했다.
  • 오늘 피어세션에서는 assignment에 대해 얘기를 나눴다.
    Assignment 4 의 경우 print 출력 부분에서 난이도가 있었고, 출력 case에 대해 서로 공유하는 시간을 가졌다.

회고

  • 이번 주 공개된 필수 Assignmentpython 으로 단순 구현하는 문제였지만, 다음주부터 진행되는 Deep Learning Basics 의 경우에도 이정도 양의 과제가 나온다면 지금보다 굉장히 힘들어 질 것 같다는 생각이 들었다. 10-7시에는 코스에 몰두하고, 그 외 시간에 추가 공부를 하자
  • 경사하강법을 구현해 보았는데, 개념을 이해했다고 생각했지만 막상 코드로 구현해보니 쉽게 결과가 나오지 않았다. 앞으로 나올 여러 모델과 개념을 공부할 때도, 눈으로만 보지 말고 안다고 생각했던 것도 직접 구현하며 익혀 나가야 겠다.
  • 스케줄 관리를 위해 trello 워크스페이스를 생성했다. 앞으로 강의, 과제, 프로젝트, competition등 할 일이 많아질 테니 trello와 구글 calendar로 일정을 관리하자

0개의 댓글