[Review] 2020-03-09 비개발자를 위한 데이터 스터디 – 7 Week Challenge

 

SQL AngelesLA 한인 IT 커뮤니티 그룹으로 다양한 IT 기술을 공부하며 회원들의 소통을 공유 합니다. 현재 다양한 스터디를 운영하고 있으며 각종 공지를 위한 포럼, 그룹채팅을 운영하고 있습니다. 커뮤니티는 회원제로 운영되고 있으며 참여의 제한은 없습니다. 스터디 참여를 원하시거나 교류를 원하시는 분은 아래 홈페이지에서 상세 내용을 확인할 수 있습니다.

·         문의메일 : Leo.Sungwook.Kang@gmail.com

·         KAKAO : SQLMVP

·          SQL Angeles 공식 홈페이지 : http://SQLAngeles.com

·          공식 Facebook 그룹 : https://www.facebook.com/groups/SQLAngeles/

 

오늘은 SQL Angeles에서 준비한 7주 프로젝트중 3주차로 [비개발자를 위한 데이터 스터디]라는 주제와 함께 UI/UX, Artist, 그래픽 디자이너, SW QA, 사회학자, 오디오 레코딩 전문가, 통계학자, 마케터 등 다양한 분야의 분들과 모여서 스터디를 진행 하였습니다.

 

1(2/24/2020)

아이스브레이킹

데이터베이스는 무엇이며, 데이터는 어떻게 저장되는가?

 

2(3/2/2020)

database 용어 정리

database 연결하기

[select * from tablename where id = 1 and name = ‘누구누구’ order by id desc;] 이해하기

 

3(3/9/2020)

조인이란?

INNER / OUTER 차이 이해하기

 

4

통계를 위한 count, sum, min, max 사용하기

group by ?

having 으로 group 결과 제한하기

 

5

SQL함수 활용하기

MS-SQL 함수에는 어떤게 있을까?

함수를 검색하는 방법

 

6

서브쿼리란?

IN / EXISTS 이해하기

서브쿼리를 다른 테이블과 조인하기

 

7

심화학습

SQL 퀴즈

 

 

오늘은 3주차 모임으로 JOIN에 대해서 학습하였습니다. JOINSQL을 활용하여 데이터를 추출 할 때 핵심이라고 할 수 있으며, 여러 테이블에 흩어져 있는 데이터를 합쳐서 추출할 때 사용 됩니다. JOIN은 개념이 많이 어렵지는 않지만, 실제 데이터를 추출하려면 의외로 생각해야하는 부분이 많습니다. 그래서 JOIN은 다음주에 한번 더 진행하기로 하였습니다.

 

JOIN에 대한 1시간의 이론 수업이 끝나고 실습 시간입니다. 지난주 까지는 단일 테이블에 대한 기초적인 조회였다면 오늘은 여러 테이블의 데이터를 조합하는 시간으로 모두 멘붕을 겪는 시간이었습니다. 힘들지만 오늘만 잘 넘기면 우리는 데이터에 한발짝 더 다가갈 수 있기에 참석자 모든 분들이 열정을 가지고 실습에 임하였습니다.

 

오늘의 문제.

Q : First Name Gigi인 사람의 집 주소와 전화번호를 추출하고, 주소와 전화번호의 타입명을 추출하세요.

 

관련 테이블 :

select top 1 * FROM Person.Person

select top 1 * from person.BusinessEntityAddress

select top 1 * from Person.PersonPhone

select top 1 * from person.Address

select  * from Person.AddressType

select  * from person.PhoneNumberType

 

A :

SELECT

    a.BusinessEntityID, a.FirstName, b.AddressID, c.AddressLine1, c.PostalCode, d.PhoneNumber

from person.person as a

    left outer join person.BusinessEntityAddress as b on a.BusinessEntityID = b.BusinessEntityID

    inner  join person.Address as c on b.AddressID = c.AddressID

    left outer join Person.PersonPhone as d on a.BusinessEntityID = d.BusinessEntityID

    left  outer join Person.AddressType as e on c.address

where a.FirstName = 'Gigi'

 

집중해서 문제 풀이 중입니다.

 

오늘 스터디에서는 조금 더 효과적인 정보 전달을 위해 그림을 그릴 수 있는 랩탑으로 준비를 하였습니다. (사실 한국의 안녕마트에서 호갱 당해서 구입한 무쓸 랩탑이었는데, 훌륭한 발표 도구가 되었습니다.) 제가 악필에 그림을 못그려서 설명하는데 오히려 방해가 되었을지도 모르겠네요 ^^;

 

 

오늘 참석자분들 결산입니다! 빼먹지 말고 벤모 주세요~

 

 

 

다음 스터디에도 항상 발전하는 스터디가 되기를 기대하면서 오늘 하루도 고생 많으셨습니다.

 

2020-03-09 / http://sqlangeles.com

 

 

LA 한인 SQL 스터디 모임, LA IT 모임, OC IT 모임, SQL 스터디, 비개발자 스터디, 데이터 스터디

 

머신러닝 학습 방법(Supervised, Unsupervised, Reinforcement)

 

머신러닝의 데이터 학습 방법에는 지도 학습 (Supervised Learning) 자율 학습 (Unsupervised Leaning), 강화 학습(Reinforcement Learning) 3가지 타입이 있다.

 

지도 학습 (Supervised Learning) 자율 학습 (Unsupervised Leaning) 사용되는 알고리즘은 아래 그림과 같이 나눌 있다.

 

[지도 학습 (Supervised Learning)]

지도 학습(Supervised Learning) 데이터에 대한 레이블(Label)-명시적인 정답- 주어진 상태에서 컴퓨터를 학습시키는 방법이다. 이렇게 구성된 트레이닝 데이터셋으로 학습이 끝나면, 레이블(label) 지정되지 않은 테스트 데이터셋(test set) 이용해서, 학습된 알고리즘이 얼마나 정확히 예측(Prediction)하는지를 측정할 있다.

 

이러한 평가를 위해 교차검증(Cross-Validation) 이용되며 이를 위해 훈련 집합(A Training Set), 검증 집합(A Validation Set), 테스트 집합(A Test Set)으로 나눈다. 교차 검증을 통하여 훈련된 함수에 대해 정밀도(Precision) 재현율(Recall) 측정 있다.

 

 

훈련 데이터는 일반적으로 입력 개체에 대한 속성을 벡터 형태로 포함하고 있으며 각각의 벡터에 대해 원하는 결과가 무엇인지 표시되어 있다. 이렇게 유추된 함수 연속적인 값을 출력하는 것을 회귀분석(Regression)이라 하고 주어진 입력 벡터가 어떤 종류의 값인지 표식 하는것을 분류(Classification) 한다. 지도학습기(Supervised Learner) 하는 작업은 훈련 데이터로부터 주어진 데이터에 대해 예측하고자 하는 값을 올바로 추측해내는 것이다. 목표를 달성하기 위해서는 학습기가 "알맞은" 방법을 통하여 기존의 훈련 데이터로부터 나타나지 않던 상황까지도 일반화하여 처리할 있어야 한다. 훈련데이터로부터 하나의 함수가 유추되고 나면 해당 함수에 대한 평가를 통해 파라미터 최적화를 한다. 지도 학습은 직관적이기 때문에 다른 학습법에 비해 상대적으로 이해하기가 쉽지만, 정확한 학습 결과를 얻으려면 고품질의 많은 학습 데이터셋이 필요하다.

 

 

[자율 학습 (Unsupervised Leaning)]

자율 학습(Unsupervised Learning) 기계학습의 일종으로 데이터가 어떻게 구성되었는지를 알아내는 문제의 범주에 속한다. 방법은 지도 학습(Supervised Learning) 혹은 강화 학습(Reinforcement Learning) 달리 입력 값에 대한 목표치가 주어지지 않는다. 자율학습은 통계의 밀도 추정(Density Estimation) 깊은 연관이 있다. 이러한 자율학습은 데이터의 주요 특징을 요악하고 설명할 있다. 자율학습의 예로는 클러스터링(Clustering), 독립 성분 분석(Independent Component Analysis), 연관성 규칙, 데이터 축소 등이 있다.

 

 

자율 학습은 학습할 데이터셋만 있으면 스스로 학습하기 때문에 편리하기는 하지만 지도 학습에 비해 어려우며, 특정 결과에 대한 가이드가 없기 때문에 기대했던 것과 다른 결과가 나올 수도 있다.

 

[강화 학습 (Reinforcement Learning)]

강화 학습(Reinforcement learning) 기계 학습의 영역이다. 행동심리학에서 영감을 받았으며, 어떤 환경 안에서 정의된 에이전트가 현재의 상태를 인식하여, 선택 가능한 행동들 보상을 최대화하는 행동 혹은 행동 순서를 선택하는 방법이다. 훈련을 따르면 보상(reward) 주고 못하면 (punishment) 주어 감독관이 원하는 방향으로 학습을 하게 된다.

지도 학습처럼 입력과 출력이 명확한 관계를 갖고 있는 상황이 아니라 환경과의 상호 작용의 결과로서 학습을 하거나 경우의 수가 너무 많아 옳고 그름에 대해 사전에 명확하게 기술하기 어려운 환경에 적합한 학습방법이다.

 

 

이러한 문제는 매우 포괄적이기 때문에 게임 이론, 제어이론, 운용 과학, 정보 이론, 시뮬레이션 기반 최적화, 다중 에이전트 시스템, 군집 지능, 통계학, 유전 알고리즘 등의 분야에 사용된다.

 

 

[참고자료]

l  https://bigdata-madesimple.com/machine-learning-explained-understanding-supervised-unsupervised-and-reinforcement-learning/

l  https://ko.wikipedia.org/wiki/%EA%B0%95%ED%99%94_%ED%95%99%EC%8A%B5

 

2020-03-08/ Sungwook Kang / http://sungwookkang.com

 

 

인공지능,  Artificial Intelligence, 머신러닝, Machine Learning, 딥러닝, Deep Learning, AI, 신경망, 뉴럴 네트워크, 강화학습, 지도학습, 자율학습, Supervised Learning, Unsupervised Leaning, Reinforcement Learning

인공지능 /  머신러닝 / 딥러닝 개념

 

인공지능 (Artificial Intelligence) 머신러닝 (Machine Learning), 딥러닝 (Deep Learning) 개념에 대해서 살펴본다.

 

 

 

[인공지능 (Artificial Intelligence)]

인간의 지능으로 있는 사고, 학습, 자기 개발 컴퓨터가 대체할 있도록 하는 방법을 연구하는 분야이다.

 

 

[머신러닝 (Machine Learning)]

사람이 학습하듯 컴퓨터에게 사람이 데이터를 입력시켜 학습을 시키는 방식으로, AI 정확한 결과를 예측 있도록 제공된 학습 데이터를 다양한 알고리즘을 통하여 스스로 학습한다. 머신러닝은 정해진 명령보다 데이터를 기반으로 예측이나 결정을 이끌어 내기 위해 특정한 모델을 구축하는 방식으로 모델을 구축함으로써 입력하지 않은 정보에 대해서다 판단이나 결정을 있게 된다.

 

머신러닝은 현재 많은 분야에서 활용되고 있으며 문자 인식, 안면 인식, 자동 번역, 챗봇 등의 자연어 처리 분야와, 음성 인식, 필기 인식, 텍스트 마이닝, 스팸 필터, 추천 시스템 등의 정보 검색 엔진, 유전자 분석, 단백질 분류 다양한 곳에서 사용되고 있다.

 

 

[딥러닝 (Deep Learning)]

 머신러닝에서 발전된 형태로 사람이 학습할 데이터를 입력하지 않아도 스스로 학습하고 예측한다. 이러한 모델은 인간의 신경망을 본딴 인공 신경망에서 발전한 것이다. 딥러닝은 머신러닝 기법인 Feature Learning (또는 Representation Learning) 하나 이다. 딥러닝은 인공신경망에서 발전한 심층신경망 (Deep Neural Network, DNN)인데, 여러 신경들이 다음 신경에 신호를 전달하는 방식의 모델이기에 딥러닝을 계층적 Feature Learning (또는 Representation Learning)라고 부른다.

 

딥러닝의 가장 대표적인 예가 2016 이세돌 9단과 바둑 대결을 펼쳤던 구글의 알파고이다. 당시 알파고는 바둑 기보를 보고 스스로 바둑 전략을 학습했다.

 

 

페이스북은 딥러닝 기술을 적용해 2014 딥페이스라는 얼굴 인식 알고리즘을 개발했다.

 

이외에도 MS, IBM 많은 테크기업들이 딥러닝을 적용한 제품을 만들었다.

 

 

위에 정의된 내용으로 동물을 판단하는 방법을 살펴보자. 머신러닝의 경우 개의 특징을 추출하는 것은 사람이 하며, 추출된 특징을 학습하여 고양이인지, 개인지 판단하는 것은 기계가 한다. 반면 딥러닝은 특징을 추출하고 학습하는 모든 과정을 기계가 한다.

 

2020-03-07/ Sungwook Kang / http://sungwookkang.com

 

 

인공지능,  Artificial Intelligence, 머신러닝, Machine Learning, 딥러닝, Deep Learning, AI, 신경망, 뉴럴 네트워크, 구글 알파고, 페이스북 딥페이스

CNN (Convolutional Neural Network) 개념

 

CNN(Convolutional Neural Network) 이미지를 분석하기 위해 패턴을 찾는데 유용한 알고리즘으로 데이터에서 이미지를 직접 학습하고 패턴을 사용해 이미지를 분류한다. CNN 핵심적인 개념은 이미지의 공간정보를 유지하며 학습을 한다. CNN 필터링 기법을 인공 신경망에 적용함으로써 이미지를 더욱 효과적으로 처리하기 위해  Yann LeCun (https://en.wikipedia.org/wiki/Yann_LeCun) 제안하였으며 (http://vision.stanford.edu/cs598_spring07/papers/Lecun98.pdf)  현재 러닝에서 이용되고 있는 형태의 CNN 제안되었다. 기존의 필터링 기법은 고정된 필터를 이용하여 이미지를 처리했다.  아래 그림은 필터의 종류와 기능이다.

 

이미지 관련 Deep Learning CNN이전과 이후의 세상으로 나눌 있다. CNN 나오기 이전 이미지 인식은 2차원으로 이미지(채널까지 포함 3차원) 1차원 배열로 바꾼 FNN (Fully- connected multi layered Neural Network) 신경망으로 학습시키는 방법 이었다. FNN 문제점은 인접 픽셀간의 상관관계가 무시된다는 것이다. FNN 벡터 형태로 표현된 데이터를 입력 받기 때문에 이미지를 반드시 벡터화 해야 한다.  그러나 이미지 데이터는 일반적으로 인접한 픽셀간의 상관관계가 매우 높기 때문에 이미지를 벡터화 (vectorization)하는 과정에서 정보 손실이 발생한다.

[FNN 이용하여 이미지 처리를 위한 벡터화]

 

 

CNN 이미지의 형태를 보존하도록 행렬 형태의 데이터를 입력 받기 때문에 이미지를 벡터화 하는 과정에서 발생하는 정보 손실을 방지할 있다. 기본 개념은 "행렬로 표현된 필터의 요소가 데이터 처리에 적합하도록 자동으로 학습되게 하자" 것이다.

 

 

일반적인 신경망은 affine 명시된 fully-connected 연산과 ReLU 같은 비선형 활성 함수 (nonlinear activation function) 합성으로 정의된 여러 계층을 쌓은 구조이다. CNN Feature 추출하는Convolution Layer 추출된FeatureSub-Sampling하는 Pooling Layer 구성되어 있다. Convolution Layer 이미지에 필터링 기법을 적용하고, Pooling Layer 이미지의 국소적인 부분들을 하나의 대표적인 스칼라 값으로 변환함으로써 이미지 크기를 줄이는 등의 다양한 기능들을 수행한다.

 

 

 

[Convolutional Layer]

Convolution Layer 정의는 합성곱이다. 현재 위치의 출력 데이터는 인접한 Pixel Convolution Filter 곱해서 얻어진 값이다.

 

합성곱(合成-, convolution, 콘벌루션) 하나의 함수와 다른 함수를 반전 이동한 값을 곱한 다음, 구간에 대해 적분하여 새로운 함수를 구하는 수학 연산자이다.

출처 : https://ko.wikipedia.org/wiki/%ED%95%A9%EC%84%B1%EA%B3%B1

 

아래 그림은 단일 채널에 대한 합성곱 계층 동작을 표현한 것이다. 4x4 매트릭은 입력 데이터이고 3X3메트릭은 필터이다. 필터가 데이터 적용되어 계산되는데, 필터가 데이터에서 칸씩 또는 칸씩 이동하면서 계산하는데, 값을 Stride 한다. 이를 통해feature map 만들 있다. 필터(또는 커널) 구성에 따라 이미지 특징을 뽑을 있다.

 

 

 

아래 그림은 멀티 채널 입력 데이터에 필터를 적용한 합성곱을 나타낸다.

 

 

합성곱 계층을 거치면서 이미지의 크기는 점점 작아지게 되고 이미지의 가장자리에 위치한 픽셀들의 정보는 점점 사라지게 된다. 이러한 문제점을 해결하기 위해 이용되는것이 패딩 (Padding)이다. 패딩은 이미지의 가장자리에 특정값으로 설정된 픽셀들을 추가함으로써 입력 이미지와 출력이미지의 크기를 같거나 비슷하게 만드는 역할을 수행한다. 아래 그림은 0 값을 갖는 픽셀을 추가하는 zero-padding 적용한 예이며, CNN에서는 주로 zero-padding 이용된다.

 

 

 

[Pooling Layer]

Pooling (sub sampling 라고도 부른다.) 레이어는 컨볼루션 레이어의 출력 데이터를 받아서 출력 데이터(Activation Map) 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용된다. 풀링 레이어를 처리하는 방법으로는 Max Pooling, Min Pooling, Average Pooling 있다. 일반적으로 풀링과 stride 동일한 크기로 설정하여 모든 원소가 한번씩 처리 되도록 한다.

 

Pooling Layer Convolution Layer 비교하면 아래와 같은 특징이 있다.

·       학습대상 파라미터가 없음

·       Pooling 레이어를 통과하면 행렬의 크기 감소

·       Pooling 레이어를 통해서 채널 변경 없음

 

[Convolution Layer 출력 크기]

  • 입력 데이터 높이: H
  • 입력 데이터 폭: W
  • 필터 높이: FH
  • 필터 폭: FW
  • Strid 크기: S
  • 패딩 사이즈: P

[Pooling Layer 출력 크기]

 

 

요약하면 CNN 입력 데이터에 대해서 필터를 통해 이미지의 특징을 추출하고 (Convolution Layer) , 특징을 강화하고 이미지의 크기를 축소(Pooling Layer)한다. 과정을 반복하여 처리된 결과를 출력한다.

 

 

 

[참고자료]

·       http://taewan.kim/post/cnn/

·       https://untitledtblog.tistory.com/150

·       https://hamait.tistory.com/535

·       https://bcho.tistory.com/1149

·       https://m.blog.naver.com/laonple/221193389981

·       https://gruuuuu.github.io/machine-learning/cnn-doc/#

·       https://crystalcube.co.kr/192

 

 

 

 

2020-03-06/ Sungwook Kang / http://sungwookkang.com

 

 

 

CNN, Convolutional Neural Network, 이미지 처리, CNN 알고리즘, 컨볼루션, 머신러닝, 딥러닝, Deep learning, AI, FNN 알고리즘

+ Recent posts