2022의 게시물 표시

AWS Certified Cloud Practitioner 시험 키워드 핵심요약 단권화 (+합격후기)

이미지
AWS 장점- 온디맨드, 향상된 속도와 민첩성, 규모의 경제 혜택, 글로벌 배포 AWS 탄력성이란: 수요변화에 따라 리소스 크기 조정(확장성), 종량제 청구 모델, 안쓰이는 CPU용량 제거  유연성이란: 여러 운영체제, 여러 프로그래밍 언어 사용가능  종량제 가격 : 고정비용 -> 변동 비용 (데이터 센터운영비용, 물리적 서버비 절감) 빠른 서비스 제공: 엣지 로케이션 마이크로서비스로만 구축하려면: AWS 구성 요소 결합 해제  AWS 아키텍쳐 설계 원칙: 확장가능 아키텍처, 관리형 서비스 , 자주 작게 되돌릴 수 있는 변경, 프로세스 및 절차의 지속적 개선( 운영 우수성), 예상시간에 의도한 기능 정확일관 수행(성능 효율성), 탄력적이고 신속 자동복구 및 수요충족을 위한 동적 컴퓨팅 확보(안정성) Resource tagging: AWS 월별 청구서 이해에 도움 리전 (Region): AWS의 서비스가 제공되는 서버의 물리적 위치, 글로벌 인프라의 구성요소 리전이 아닌 AWS: cloudfront, route 53 AWS 비즈니스서포트: 프로그래밍 방식 사례 관리하는 서포트 플랜, 24시간 연중무휴 글로벌 배포: 짧고 높은 처리량과 중복성을 가진 네트워크로 연결된 여러 리전 구성 가용영역(Available Zone, AZ) :데이터 센터는 보안상의 이유로 어디에 위치하는지 공개가 되지 않고 고객이 사용할 데이터 센터를 선택할 수도 없음, 상호 연결된 하나 이상의 격리된 데이터 센터  책임 공유 모델 AWS 책임: 인프라 물리적 장치 구성, 물리적 보안, 운영 체제 패치, 가상화 계층 보안, 리소스 구성, EC2에 운영그룹 구성 , 앱 라이센스 비용 사용자 책임: 자체게스트 OS/DB 등 컴퓨팅 Amazon EC2 -클라우드에서 안전하고 규모 조정이 가능한 컴퓨팅 파워를 제공 안전하고 크기 조정 가능한 컴퓨팅 용량 사용 몇 분만에 서버 인스턴스 부팅, 인스턴스 중지해도 EBS스토리지와 탄력적 IP 요금은 나감.  ...

비전공자를 위한 개쉬운 인공지능 코딩- 딥러닝 신경망 만들기(3-1)

이미지
지난 시간까지 인디언 부족의 몇년동안 누적된 의료기록 데이터를 가져오고 전처리하는 과정을 하면서 딥러닝을 하기위한 모든 준비가 마쳤다 이번 시간에는 4번째 강의만에 드디어 딥러닝스러운 신경망을 만들어보는 차례다 원래 정공법은 다양한 활성화 함수라던가 역전파 이론이라던가 수학적인 배경을 채우면서 이론을 배경으로 구현하지만 실제로 내가 그렇게 해본결과 재미도없고 비전공자는 한단락 읽고 나갈것이 자명하다                                               (나와 우리 교우들은 이런거로 시작함;) 따라서 레고들을 가지고 조립하며 구현하는 과정에서 우리 어렸을 적에 '김영만 종이접기' 처럼 경험적으로 배우는게 훨씬 기억에 잘 남고 이해가 잘된다고 생각한다.  (사실 인공지능이라는게 핫해진지 얼마 안되어서 정공법으로 배운다 라는 개념이 없긴함)  일단 오늘은 LSTM이나 GRU 같은 '순환 신경망' '시계열 데이터를 다루는 딥러닝' 등의 상위 개념인 '시퀀셜 모델 신경망'을 만들기 위해 신경망 레이어를 만들며 익혀볼것이다. 시계열데이터, 순환신경망, 시퀀셜 모델 이런것은 '시계열 데이터'를 분석 혹은 예측과 같은 작업을 위해 사용하는 신경망인데, 시계열 데이터는 지난 시간에 배웠듯이 시간 순서에 따라 벨류가 찍히는 시간적인 역학관계가 내포된 데이터다 지금 최대한 쉽게 설명하고 있는데 아마 비전공자 입장에서보면 슬슬 벽이 느껴질 수 있으니까 꼭 1편부터 보는것을 추천한다 아무쪼록 이런 시퀀셜 모델의 신경망을 케라스로 만들때는 굉장히 쉽다 일단 예제코드를 보면서 하나씩 설명을 하자면 , i) 우선 추후에 어떤 심화적인 딥러닝 코드를 하더라도, 보통 우선은 '케라스' 로 할 경우에 시...

비전공자를 위한 개쉬운 인공지능 코딩- 딥러닝용 데이터 라벨링하기 (2-3)

이미지
 지난 시간엔 어디서 어떤 종류의 데이터를 가져오는 간단한 방법, 데이터 전처리의 개념과 간단한 예제를 다루어보았다. 이번엔 지난 시간의 숙제 데이터였던 인디언들의 당뇨병 여부를 포함한 5년동안의 의료기록을 이후 당뇨병 확률을 예측하기 위한 데이터 라벨링 기법을 다루어본다.  데이터 라벨링이란 우리가 가져온 '인디언 의료기록 데이터' 나 '캘리포니아 주택동향' 데이터와 같이 사람이 만든 데이터를 AI가 학습할 수 있도록 0과 1등으로 가공하는 과정으로 전처리의 일종이기도 하다.   자료의 설명란을 보면 알 수 있지만, 인디언 데이터를 처음 가져오면 이런 형태로, 각 열은 아래와 같다 (다운받을 때 다 설명이 쓰여있다) A: 임신횟수 B: 경구 포도당 내성검사에서의 2시간 동안 혈장 포도당 농도  C : 이완기 혈압  D : 삼두근 피부 주름 두께 E : 2시간 혈청 인슐린 F : 체질량 지수 G: 당뇨병 가계도 기능 H: 나이 I: 당뇨병 판정 여부 ( 1: 양성, 0: 음성)  딥러닝, 머신러닝 을 포함한 인공지능 알고리즘 대부분이 'input data' 를 받아 학습해 'output data' 의 형태로 결과를 내뱉는다  따라서 이번의 인디언 의료 데이터는 A~H 까지는 input 데이터 X 변수로 , I는 output 데이터 y로 사용한다.   이를 통해 우리가 개발할 딥러닝 프로그램은 X를 y에 mapping 하는 모델이며 이전 장에서 배웠던 데이터 슬라이싱을 이용해 아래와 같이 나눌 수 있다. X = dataset[:,0:8] y = dataset[:,8] 인디언 의료기록 데이터셋과 같은 Kaggle이 제공하는 오픈소스 데이터의 종속변수 (y) 는 보통 0과 1로 잘 라벨링되어 공개된다. 하지만 우리가 실제로 다른 경우에서 자기만의 딥러닝 모델을 사용할때 필요한 데이터에는 라벨링이 되어있지 않을 가능성이 크고, 실제로 엑셀을 열어서 한땀한땀 하기에 굉장히 노동력이 ...

비전공자를 위한 개쉬운 인공지능 코딩- 딥러닝용 데이터 가져오고 분석하기 (2-2부)

이미지
지난 2-1차시까지 Colab 환경설정, 딥러닝을 위한 부품세팅과 주요 라이브러리 소개를 했다. 이번 2-2 포스팅에서는 '어떤'데이터를 '어디서' 가져와서 '어떻게' 사용하는지 설명한다. 딥러닝을 포함한 모든 인공지능은 학습이 가장 중요한데, 인공지능을 처음 구현을 했을땐 아주 똑똑하고 능력있고 빠른 아이와도 같기 때문이다. 애들이 얼마나 좋은 능력을 가지고 태어났는지도 중요하지만 얼마나 좋은 정보를 어느 정도로 배워야 하는지에도 굉장히 중요한 것과 같다. 이처럼 어떤 데이터를 적절히 학습시키느냐가 인공지능 프로그램의 성능을 좌지우지한다.   데이터를 취득하는 방법에는 'Kaggle' 이나 'github'와 같이 오픈소스 형태로 편하게 다운받아서 쓰는 경우가 많지만, private하거나 취득에 한계가 있을때는 '생성적 적대 신경망' , 'Autoecoder'등과 같은 생성모델을 이용해 기존의 적은 데이터를 증강시켜 학습에 이용하기도 한다.  1.데이터 가져오기 인공지능 기반의 증강 모델은 본 딥러닝 기초 코스보다 많이 심화된 method이므로 차후에 설명하기로 하고, 이번엔 open source 형태로 colab에 기본으로 달려있는 'california housing dataset' 을 사용한다 지난 시간까지 알려준 Colab 세팅에서 맨 왼쪽의 파일그림을 누르고 'sample data' 디렉토리 하위에 기본으로 설치되어 있다. 지난 시간까지의 환경설정을 잘 따라왔다면, pandas라는 레고를 설치하고, 줄임말로 pd로 만든 후, pandas가 어떤 역할을 하는지 알고 있을 것이다.  pandas는 간단하게 설명을 한번 더 하자면, 데이터 조작 및 분석을 위한 python 용 라이브러리(레고)인데, 이 pd(pandas)를 사용해 캘리포니아 데이터를 우리 프로그램에 받아와 분석해보자 pd 레고봉투에는 'read_csv...

비전공자를 위한 개쉬운 인공지능 코딩- 2편 바로 딥러닝 만들기 (2-1부)

이미지
 지난 시간에는 비전공자도 인공지능 충분히 만들 수 있는 이유, 필요한 준비물과 간단한 환경설정을 해보는 숙제를 했다 이제 본격적으로 인공지능 만들기 컨텐츠를 시작할 것인데, 내 경험상 논문을 작성하는 대학원생이나 연구원 이정도의 깊이가 필요하지 않은 이상, 정석적으로 수학적 기초 접근은 오히려 흥미가 뚝뚝 떨어지고 재미가 없다. 사실 인공지능이라고 해도 프로그램 연구개발 자체가 하다보면 노잼시기가 오는데, 시작부터 '선형관계' 라던지, '퍼지이론' 이런걸 하면 금방 흥미가 없어진다고 자신있게 말할수 있다. (원래는 저렇게 기초를 다지는게 정석이긴 함^^) 그래서 이번 2강은 바로 딥러닝 만들기를 해보면서 모르는 단어, 구조, 1강에서 말한 '레고' 의 사용법을 하나하나 파헤쳐보며 탑-다운 방식으로 배워보자  오늘 배울 딥러닝 프로그램은 아래와 같은 순서로 만들어진다, 또한 심화적인 기술, 기능을 가진 인공지능 프로그램들도 아래와 같은 순서에 크게 벗어나지 않는다 1. 학습용 데이터 가져오기, 전처리하기, 라이브러리 로드 2. Keras를 통한 인공지능 모델 정의 3. Keras 모델 구현 및 컴파일 4. Keras 모델 성능 평가 5. 인공지능한테 미래 예측 시켜보기 여기서 내가 원하는 탑-다운 공부방식이란 교육방법론 같이 거창한게 아니고, 예를들어 독자가 ' 1. 학습용 데이터 로드, 전처리' 를 읽으면서 '전처리' 란 단어를 보고 모르는 단어다 싶으면 검색을 통해 어려운 단어 혹은 모르는 단어를 -> 자신이 알고있는 간단한 단어로 이루어진 설명으로 재해석 이면 충분하다  따라서 본 글도 최대한 비전공자 눈높이에 맞춰서 쓸 예정이지만 '컴파일' '전처리' 와 같은 단어는 모르면 구글링을 통해 간단한 자기만의 한줄요약을 하면서 읽는게 기억에 잘 남고 이해에도 좋다 (내가 적기 귀찮아서 그러는게 아님) 아무쪼록 본 과정에서는 'Keras' 라...

비전공자를 위한 개쉬운 인공지능 코딩- 1편 환경설정

이미지
요즘 유튜브나 이런저런 광고들을 보다보면 코딩, 프로그래밍이 굉장히 인기다 반면에 잘 살펴보면(내가 본 바로는) 대다수가 프론트엔드, 웹디자인, 게임 만들기, 서버 만들기 등이 주류를 이루고 인공지능 연구개발을 다루는건 드물다 아마 인공지능, 신경망, 최적화 같은 용어 기반으로 접근해서 수식 팍팍 튀어나오니까 많은 비전공자들이 심리적인 거리를 느껴 수요가 적어 그만큼 다루는 컨텐츠의 공급도 적은 것 같다 사실 인공지능은 철학이자 인문학 혹은 초등학교때 배웠던 '문제푸는 방법찾기' 와 같다 인공지능은 크게 머신러닝/ 강화학습/ 딥러닝 이렇게 분류가 되고는 하는데, 이 세가지가 다루는 문제를 합집합으로 표현하면 분류(classification)과 회귀(regression)이다. 이 외에도 생성적 적대 신경망이라던가 분산학습이라던가 등등 있는데 큰 틀로보면 보통 저 두가지 문제로 많이 입문하고 사용처도 많은 것 같다 -분류(classification) 는 인공지능이 사람이 관계성을 찾기 어려운 복잡한 데이터를 학습하여 유의미한 관계를 찾아내 파악하거나, 혹은 이미지 데이터를 인식하거나 해서 요즘 많이 사용되는 자율주행 차량에 사용되거나 한다. -회귀(regression)는 인공지능이 연속적인 데이터, 예를들어 주식같은 데이터를 학습하여 차트와 거래량의 과거의 관계성을 파악해 미래를 예측하거나 하는데 사용되거나 한다. 이를 비롯해 부족한 학습용 데이터를 생성한다던가, 스스로 똑똑해진다던가 하는 많은 인공지능 분야들이 있다 여기서 수학이 팍팍 나오고 어렵고 그러는건 성능을 좋게 만드는 관점에서 등장하지, 인공지능을 만들기 위해서는 전문적인 사전지식보다는 '어떤' 문제를 '어떻게' 접근하여 해결할것인가? 라는 아이디어가 더 중요하다 사실 나도 인공지능SW로 실제로 메인 수입원인 만큼 가장 어려웠던 부분이 아래와 같다 1단계: 여기서 무엇이 문제일까?  문제, 즉 어떠한 불편함, 사건 등에 인공지능이 어느 부분에서 도움이 될까 파...