디지털 교육 설계를 위해 디지털 관련 개념을 이해해보기로 한다 ㅋㅋㅋㅋㅋㅋㅋ

디지털이라니 좋지만 싫을 것 같다. 싫지만 좋을거야 ㅠ-ㅠ 


※ 학습 노트

학습 날짜

 2020년 1월  

학습 사이트 

 Edwith

과정 제목

 3분에 익히는 머신러닝의 기본 원리

학습 시간

 72강/941분

의견

 - 짧은 영상 3개로 개념적인 설명만 제공

 - 참고자료로 영상이 1-2개씩 추가되어있음

 - 추가된 영상은 (내 기준) 갑자기 어려워지기도 하고 사운드가 안정적이지 않아서 듣기 힘들지만,
   어차피 용어와 개념에 익숙해지려면 이것저것 여러번 들어야겠다는 생각에 1.5배속으로 1회 시청하였다

 - 추가 영상 중 [리얼밸리 EP05] 머신러닝, 딥러닝 초간단 설명 추천!!! 

   개인적으로 머신러닝의 상세 내용보다는 기본 개념과 활용이 궁금했던터라 요정도가 딱 좋았을 수준 ㅎㅎ

 - 마지막 추가 영상까지 보고 느낀바는,
   edwith강좌를 개인 유튜브 채널, 블로그, meet-up 홍보용으로 활용한 것이 아닐까,,,싶었다. 뭐, why not ㅋ

 학습 모듈

 어려운 머신러닝, 쉽게 설명해드려요

 머신러닝을 실전에 적용하려면?

 딥러닝의 원리를 알아봅니다


어려운 머신러닝, 쉽게 설명해드려요

* 머신러닝이란 : 만들고 싶은 목표가 있고, 만드는 방법을 모르는 상황에서

                      해결 방법을 사람이 제시하는 것이 아니라 기계가 직접 시도하는 것을 반복한 후 적합한 방법을 만들도록 하는 기술

* 머신러닝 3요소 : 1) 경험 2) 성능지표 3) 작업목표 >> 3요소를 반복하며 정답에 가까워지는 것 

머신러닝이 인공지능의 핵심 기술인 이유

  - 인간이 지능을 재현하려는 인공지능은 방법은 모르지만 결과를 알고 있음

프로그래밍과 머신러닝의 차이

  - 기존 컴퓨터는 프로그래밍을 통해 일일이 방법 하나하나를 코딩해줌

  - 머신러닝은 컴퓨터 스스로 데이터를 학습해서 결과물을 만들어냄 

* 소프트웨어 1.0 vs 소프트웨어 2.0

- 사람이 프로그래밍을 해주는 소프트웨어 1.0 

- 기계 스스로 데이터를 통해 점점 발전하는, 소프트웨어 2.0 



머신러닝을 실전에 적용하려면?

머신러닝의 5단계

1단계 데이터 수집 (collecting)

2단계 데이터 전처리(preprocessing) : 각기 다른 크기와 구도를 가진 데이터를 최대한 같은 포멧을 갖추도록 처리하는 과정

         - 많은 경우 어떤 데이터가 어떤 결과물을 만드는지 패턴을 알려주는 과정인 레이블링(labeling)이 필요

3단계 피처추출(feature extraction): 작업 목표와 관계없는 불필요한 피처들을 버리고 중요도에 맞게 적절히 재구성하는 과정

        - 딥러닝: 데이터를 쏟아 부어 피처 추출을 머신러닝에 맡기고자 하는 기술

4단계 학습 (training)

5단계 검증(validation)



딥러닝의 원리를 알아봅니다 (Feat.CNN)

* 머신러닝 차원의 저주: 데이터의 차원 (피쳐)의 수가 늘어날수록 필요한 데이터의 량은 제곱으로 많아짐 

* 머신러닝 차원의 저주를 해결하기 위한 딥러닝 단계 

  CNN(Convolutional Neural Network) 이미지 필터링, 샘플링 반복 >> 저차원의 필터 생성 >> 여러 레이어 생성 >> 예측



[추가 영상] 머신러닝, 1시간으로 입문하기



* What is machine learning

  A computer program is said to learn from experience E with respect to come class of tasks T and performance measure P,

  if its performance at tasks in T, as measured by P, improved with experience T - T.Michel(1997)


(예시) 축구 게임 전술을 위한 프로그램

         T: 축구 게임에서 승리

         P: 골

         E: (x) 선수들의 움직임 (y) 평가

 

 Task

 Performance

 Experience

 분류 (classification) 

 0-1 loss function (에러가 발생했을 때 1의 에러를 더하는 방법)

 labeled data 

 회귀 (regression)

 L2 loss function (실제 값과 예측한 값의 거리의 합)

 labeled data

 군집 추출 (clustering)

 군집의 중심에서의 거리

 unlabeled data


* Machine learning process

1) Select a parametic / nonparametic model

2) Set a performance measurement including regularization term

3) Training data(optimizing parameters) until validation error increases

4) Evaluate the final performance using test set


* Regularization
   - 현재를 잘 설명하면서 미래를 예측할 수 있는 모델 필요 
   - train data가 너무 딱 맞게 학습되면 과적합(over fitting)됨 
   - 데이터를 구분하는 선이 지나치게 복합해지지 않도록 곡률을 줄여주는 역할을 하는 factor를 cost 함수에 추가하는 것이 regularization

...어려워지고 있다...먼소린지 모르겠고...(먼산)


Non parametric model: 모델없이 알고리즘을 자동으로 찾도록 하는것, 단점으로는 샘플이 훨씬 많이 필요함

  - Support Vector Machine: 분류 규칙을 찾는 기법

  - Gaussian Process Regression


마지막 몇 분은 아예 모르겠는 부분...ㅋ 그냥 꾸역꾸역 들어보았다 ㅋ



[추가 영상] 머신러닝/딥러닝 강의 7가지 추천

* 양, 난이도, 정성, 커리큘럼, 추천자의 마음을 기준으로 7개 강의를 추천함

* Coursera, Udacity, youtube, stanford 등



[추가 영상] [리얼밸리 EP05] 머신러닝, 딥러닝 초간단 설명 ★추천





일반적인 컴퓨터 사이언스사람이 찾아서 기계에 알려주는 것

  머신 러닝: 데이터를 많이 주고 최소한의 모델을 제공하여 기계한테 직접 찾게 하는 것

  딥러닝: 머신 러닝 방법 중 하나로, 모델 구조 중 사람의 뇌를 본딴 모델 구조를 사용

            - 데이터가 방대해지고
            - 인프라 스트럭처 레벨 기술 (GPU 사용, 빅데이터 처리 기술) 통해 인공신경망 훈련 가능해지며 두각을 드러내기 시작

- 현업에서는 최적화, 추천, 효율성을 높이는 문제에 굉장히 적용이 많이 되고 있음


 


[추가 영상] 어머니에게 딥러닝(CNN, RNN, GAN)을 설명해보자 // 포럼IT 딥토크 이벤트

* CNN: 이미지 인식 분야에서 사용하는 알고리즘

          이미지를 필터가 훑고 지나가면서 특징을 잡아냄

          텍스트 인식에도 적용하고 있음

* RNN: 시계열 데이터, 미래 예측, 음성인식에 사용

* GAN(generative adversarial network)



[추가 영상] [ART x TIPS] 인공지능 전문가, 스타트업을 만나다

* ...

반응형




※ 학습 노트


이런 강의가 있다.


---


Data science from MIT 

 

Computer Science의 탑 1위 대학인 MIT 공대의 "Introduction to Computational Thinking and Data Science" 수업 영상 및 강의 자료를 한국어로 번역하여 여러분께 제공합니다.

해당 강좌에서는 데이터 과학이라는 분야를 시작하기 위한 알고리즘과 통계학 그리고 기계학습의 내용을 조금씩 나눠서 다루고 있으며, 프로그래밍 실습보다는 문제 해결방법 대해서 집중적으로 공부합니다. 본격적인 데이터 과학 분야에 진입하기에 앞서, 해당 분야를 배우기 위해서는 어떤 것을 더 학습해야 하는지 체험할 수 있는 강의입니다.


---


Edwith에서 수강할 예정이지만, MIT 강의라고 하니 글로벌 플랫폼에 업로드 되어있을 것 같아 찾아보았다.

>>edX와 Youtube에 있는 듯.

(Coursera에서 the most popular 과정 중 하나인 'Python for everybody(모두를 위한 파이썬)' 도 Edwith에 한글화된 버전으로 볼 수 있다.)





* 해당 분야를 배우기 위해서 어떤 것을 더 학습해야 하는지 체험할 수 있는 강의


학습해야할 새로운 영역들은 계속해서 생겨나는데, 

범위가 처음부터 정해져있지도 않거니와 계속해서 확장하고, 변화한다.

고등학교 때처럼 정해진 교과, 정해진 범위 내에서 체계적으로 공부하기가 어렵다.

(그때가 좋은 거였...다고 말하면 안되겠지..! ㅋ 그때는 그때만의 고통과 괴로움이 있었으니까-)


올해는 수행해야할 과제가 있어서 이것 저것 닥치는 대로 찾아보았다.

지금도 아주 초초초초보지만, 그래도 아주 처음보다는 들은 것, 본 것들이 생겼다.

학습 분야의 용어에 익숙해지는 것도 중요한 것 같다.


계속해서 업데이트하고 수정해야겠지만, 학습자만의 체계와 체크리스트를 만들어가는 것도 학습의 방법 중에 하나일 것 같아서,

조금씩 정리해보기로 했는데....



* 선수조건


1. 모두를 위한 프로그래밍: 파이썬

2. 모두를 위한 프로그래밍: 파이썬 자료구조

3. 모두를 위한 프로그래밍: 파이썬을 이용한 데이터베이스 처리

4. CS50 x edwith

5. Introduction to Computer Science and Programming in Python



그런데, 당황스럽게도 선수조건이 왜이렇게 많지...! ㅋㅋㅋ 해당 분야를 배우기 위해 어떤 것을 더 학습해야하는지 체험할 수 있는 강의라고 하여 아주아주 생초보자를 위한 것인줄 알았건만.!


다행히, 모두를 위한 프로그래밍을 학습한 후이긴하지만,

불행히, 이미 시간이 지나기도 했고, 학습을 기록해놓지를 않았기에, 

선수 조건인 과정부터 점검해보기로 하였다.


그런데 맙소사 ㅠ 내가 이미 들은 줄 알았던 과정도 '모두를 위한 프로그래밍: 파이썬' 만이다. 

갈길이 멀군



[모두를 위한 프로그래밍: 파이썬 자료구조] 부터 시작한다.

(Chapter 6~8)


*** 알아야할 것 : 타입 변환, 인덱싱, len 함수, for 루프


* len 함수 : 문자의 길이 >>>리스트가 몇 개의 항목을 가지고 있는지 확인 가능

* print(s[0:4]) - 4번째 인덱스는 읽지 않음!

  print(s[:2]) - 첫 번째나 마지막 인덱스 생략할 경우, 시작 또는 마지막까지 가정하고 반환

* strings는 object이고 object는 method라는 것을 가지고 있음

* replace (문자바꾸기)

* lstrip (왼쪽 공백 없애기), rstrip (오른쪽 공백 없애기), strip (양쪽 공백 없애기)

* startwith (시작 문자열 찾기)

* 파이썬3에서부터는 모든 내부 문자열이 유니코드 (한국어가 예시로 나온다!)

  유니코드 연산이어도 문자열로 인식. (파이썬3에서는 문자열이지만 유니코드 상수가 별개로 있었고 다른 자료형으로 인식함)

* open() 파일을 여는 것

\n >>> 다음 줄로

* read()

통상 프로그래밍은 알고리즘과 자료구조로 나눌 수 있음

   - 알고리즘: 특정 문제를 해결 하기 위한 규칙 또는 단계

   - 자료구조: 컴퓨터 내에서 자료를 구조화 하는 특별한 방식


* list(리스트)

  1. 리스트의 각 항목들은 '[]'로 둘러싸임
  2. 리스트 내의 항목들에 대한 구분은 ,(콤마)로 구분
  3. 리스트 내에 또 다른 리스트를 내포할 수 있음
  4. 비어 있는 리스트를 만들 수 있음
  5. 리스트의 항목들에 인덱스 값으로 접근 가능.
  6. 리스트의 항목들은 바뀔 수 있음


* range() >>> 인자로 전달되는 값에 따라서 숫자로 이루어진 리스트를 반환


* .list() >>> 리스트 만들기

* .append('book') >>리스트에 추가

* .sort() >>> 정렬

* .split() >>> 공백을 찾아 조각을 반환

  .split(';') >>> 세미콜론 기준으로 Split해주지 않으므로 별도 정의


* 컬렉션(collection)리스트나 딕셔너리 같은 변수를 가지는 상황. 하나의 정보보다는 여러 개의 정보를 저장할 때 사용

* 리스트(list): 순서대로 정렬한 컬렉션. 데이터를 추가하면 항상 리스트의 끝에 추가되고 0부터 n-1번 위치까지 순서대로 n개의 원소가 저장됨

딕셔너리(dictionary)

- 순서 없음. 대신 키(Key) 존재

-ooo={} 또는 dict()라는 생성자를 통해 생성

- {중괄호} 안에 Key:Value 형태로 저장


* get 함수 : 

counts.get(name,0)


>>>딕셔너리에 name이라는 키가 존재할 경우 값을 불러오고,

그렇지 않을 경우에는 딕셔너리의 name이라는 키에 0이라는 값을 갖는 데이터를 추가하라는 의미

if name in counts:

   x = counts[name]

else :

   x = 0 

 x = counts.get(name,0) 


* items 메소드

keys, values 메소드로는 딕셔너리의 키와 값의 쌍을 얻음 >>> items 메소드를 사용하면 됨

items 메소드를 실행하면 '튜플(tuple)'이라는 자료 구조 안에 키와 값이 쌍을 이루어 저장된 리스트가 반환됨


* Tuples(튜플) 리스트와 거의 비슷하지만 변경불가능(immutable), 즉 값 변경 (정렬, 값 추가, 순서 변경) 불가하다는 특성에서 차이가 있음

그러나 리스트보다 훨씬 효율적으로 작동함 (용량 적게 차지, 근 빠름)

* 내장된 함수 차이

l = list()

 dir(l)

# ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

  t = tuple()

 dir(t)

# ['count', 'index']


* sorted 함수 :  딕셔너리는 키 기준으로 정렬된 값이 나옴

반응형

+ Recent posts