업그레이트 (UpGreate)

- 威武不屈


  • Home

  • Categories

  • About

  • Archives

  • Tags

  • Search

SW Expert Academy - D1_1938

Posted on 2019-07-21 | In ALGORITHM

D1_1938. 아주 간단한 계산기

문제:

  • 두 개의 자연수를 입력받아 사칙연산을 수행하는 프로그램을 작성하라.

입력:

a b 두개의 자연수가 빈칸을 두고 주어진다.

출력:

사칙연산한 결과를 순서대로 출력한다.

+,-,*,/ 순서로 연산 (나누기 연산에서 소수점 이하의 숫자는 버린다.)

생각한 로직:

  • a b를 입력 받아서 계산 결과를 바로 출력한다.
    • 나누기한 소수점 이하의 숫자는 버림으로 파이썬에서 몫을 구하는 오퍼레이션을 사용하면 되겠다.

코딩:

1
2
3
4
5
6
a,b = map(int,input().split())
print(a+b)
print(a-b)
print(a*b)
print(a//b)

Read more »

SW Expert Academy - D1_1936

Posted on 2019-07-20 | In ALGORITHM

D1_1936. 1대1 가위바위보

문제:

  • A와 B가 가위바위보를 하였다.
  • 가위는 1, 바위는 2, 보는 3으로 표현되며 A와 B가 무엇을 냈는지 입력으로 주어진다.
  • A와 B중에 누가 이겼는지 판별해보자. 단, 비기는 경우는 없다.

입력:

A B (빈칸을 사이로 주어진다.)

출력:

A가 이기면 A, B가 이기면 B를 출력한다.

생각한 로직:

  • 이기는 경우와 지는 경우를 분류하고 특징을 잡아서 문제를 해결한다.
    • 중요한 것은 꼭 모든 경우의 수를 보고 나서 일반화 해야 한다.

코딩:

1
2
3
4
5
6
7
8
9
10
11
12
13
#이기는 경우
# 1 3  -2
# 2 1  1
# 3 2  1
#지는 경우
# 3 1 2
# 1 2 -1
# 2 3 -1
A,B = map(int,input().split())
if A-B == 1 or A-B == -2:
    print("A")
else:
    print("B")
Read more »

인공지능과 머신러닝 딥러닝의 관계

Posted on 2019-02-19 | In PRODUCT

인공지능과 머신러닝 딥러닝의 관계

  • 인공지능 기술의 탄생 및 성장

인공지능 기술의 탄생 및 성장

1956년 미국 다트머스 대학 존 매카시 교수 다트머스 회의에서 처음 등장

구체적인 기준을 코딩해 넣은 기기가 아닌 대량의 데이터와 알고리즘을 통해 학습하고 작업 수행방법을 익히는 방법을 목표로 하는 인공지능 (특정 기능만 잘 하는 녀석을 좁은 의미의 인공지능 이라 한다.)을 만드는 것을 목표로 한다.

구체적인 방법에는

  • 의사결정 트리 학습
  • 귀납 논리 프로그래밍
  • 클러스터링
  • 강화 학습
  • 베이지안 네트워크
  • 인공 신경망
  • MLP ; Multi-layer Perceptron ….. Representation learning
  • 퍼셉트론(Perceptron) - 1958년 Rosenblatt

등이 존재하고 현재도 연구중에 있다. 사람의 뉴런처럼 모든 방향에서 의사결정을 하고 데이터를 전달하는 방법을 사용하기에는 너무도 많은 양의 데이터를 처리해야 한다는 문제점이 있어 한계에 봉착했었는데 병렬처리가 가능한 기술의 발전으로 많은 진전을 이뤘다.

구체적인 상관 관계에서는 다음과 같다.

1

인공지능(Artificial Intelligence)란?

기계 혹은 시스템에 의해 만들어진 지능을 의미한다.세계적인 관심을 받은 알파고부터, 사진을 보고 사물을 판단하는 소프트웨어, 영화 AI에 나오는 로봇까지 모두 인공지능의 종류들이다. ‘인공지능’이라는 용어 그대로 인간이 지닌 지적 능력을 인공적으로 구현한 것들 모두 인공지능에 포함된다. 그래서 머신러닝은 인공지능을 구현하는 방법들 중 하나이다.

  • Rule-based system
  • Classic machine learning
  • Representation learning

머신러닝

우리말로 “기계학습”인 머신러닝은 인공지능의 하위 분야다. 이는 기계가 직접 데이터를 학습(러닝)함으로써 그 속에 숨겨진 일련의 규칙성을 찾는다. 즉, 우리가 가지고 있는 사례 형식의 데이터를 컴퓨터가 학습해, 그를 기반으로 새 데이터를 평가,예상하고 이를 우리가 활용할 수 있게 한다. 감기에 걸린 환자들의 체온과 건강한 사람들의 체온 데이터를 컴퓨터에게 학습 시킨 후 특정 체온을 제시했을 때 그 체온을 가진 사람이 감기에 걸렸는지의 여부를 판독하게 하는 것이 기계학습의 예시이다. 여기서 딥러닝은 생물체의 뇌 구조에서 영감을 받은 머신러닝 기법 중 하나로 핵심 원리는 다계층 구조를 이용해서 인간 고유의 영역, 이미지 분석, 언어 인식과 같은 직관적이고 고차원적인 사고를 요하는 분야에 강점이 있다.

딥러닝

  • 회선 신경망(CNN; Convolutional Neural Network)
    • 이미지를 이해하고 이로부터 높은 수준의 추상화된 정보를 추출하거나, 새로운 질감의 그림을 그리는 등 다양한 영상처리, 컴퓨터 비전 분야에서 많이 연구되고 있는 인공신경망의 한 종류이다.

딥러닝(심층학습) 이란 기계학습의 일부로 기계학습과 대부분의 것들이 매우 비슷하지만 일반적인 기계학습과는 구별되는 두가지 큰 특징을 뽑으면 다음과 같다.

  1. 데이터의 특징을 사람이 추출하지 않는다. (데이터 전체를 학습시킨다.)
  2. 주로 인공신경망 구조를 사용하여 학습한다.

두 가지 특징들을 하나씩 설명해 보면

데이터에서 일부 특징들만 사람들이 뽑아서 기계에게 전달해 학습을 시키는 것이 아니라, 데이터 자체를 컴퓨터에게 전달하는 것이다. 예를 들어 컴퓨터에게 개와 고양이 사진을 학습시켜 특정 사진의 동물이 개인지 고양이인지 분류하도록 한다면 일반적인 기계학습의 경우 개와 고양이의 구별되는 큰 특징들을 뽑아 컴퓨터에게 전달 시키지만 딥러닝은 개, 고양이 사진 자체를 컴퓨터가 학습하도록 하는 것이다.

주로 신경망을 통해 학습한다는 것은 딥러닝이 데이터를 학습 할 때 인간의 뇌에서 일어나는 의사결정 과정을 모방한 인공신경망 구조를 통해서 학습한다는 것이다.

2

머신러닝과 딥러닝의 큰 차이점

  • 머신러닝은 특정 정보만을 추출(사람이 가설을 세우고 데이터를 넣어 그것을 학습시키는 방식)사용한다.
  • 딥러닝은 많은 데이터를 처리하고 raw한 데이터를 집어 넣고 컴퓨터가 알고리즘에 따라 결과를 내놓기 때문에 오류수정(디버깅)이 사실상 불가능하다.

※ 즉 딥러닝은 머신러닝에 포함되어 있으며 그 구분은 처리하는 데이터의 양, 하드웨어 성능, 구하고 싶은 결과의 내용에 따라 선택해야 하는 것이다.

Read more »

SQL for BigQuery and Cloud SQL

Posted on 2019-02-18 | In PRODUCT
  • Baseline: Data, ML, AI https://google.qwiklabs.com/quests/34
  • Data Science on the Google Cloud Platform https://google.qwiklabs.com/quests/43
  • Scientific Data Processing https://google.qwiklabs.com/quests/28
  • Cloud SQL https://google.qwiklabs.com/quests/52
  • BigQuery For Data Analysis https://google.qwiklabs.com/quests/55
  • 기타 구글 교육 리스트(353개 이상) https://google.qwiklabs.com/catalog

SQL for BigQuery and Cloud SQL

GCP qwiklabs 교육자료

도커를 이용한 SQL 을 사용할 때 방법

1. 사용할 데이터를 모두 수집한다.

  • 이때 데이터는 정제되지 않은 상태이다. (다양한 칼럼에 모두 때려 박은 상태)
  • 이때 주로 CSV파일이나 sql을 사용한다.(호환성이 좋고 주로 많이 사용하기 때문)

2. 이 파일을 프로젝트에서 사용할 공간에 업로드(공유) 한다.

  • 이때 파일은 목적에 맞게 뽑은 데이터이며 이 자료를 업로드 한다.

  • 이 공간은 예를 들면 구글 클라우드 스토리지 같은 저장 장소이다.(상황에 따라 외부서비스나 내부용량장치를 이용한다.)

3. SQL서버에 업로드 한다. (DB 트래픽 분석을 위해서)

  • 분류된 데이터를 불러오기 쉽도록 SQL에 DB를 만들고 TABLE을 만들어 임포트 시킨다.

4. SQL을 보기 쉽게 통계로 확인 할 수 있는 그림(그래프)로 지원

  • 구글 클라우드 데이터랩 ; 쥬피터 노트북 환경처럼 웹으로 개발 및 확인 가능

BigQuery: Qwik Start - Console

도커를 이용한 SQL 사용 방법 숙달

1. 사용할 데이터를 SQL로 확인한다.

2. SQL에 dataset을 저장할 database를 만든다.

3. 데이터 베이스에 저장할 자료를 가져온다.

  • 이때 파일은 구글 클라우드 스토리지 같은 저장소에 올려서 가져오거나 다른 방법을 통해서 일단 개발환경안에 집어 넣는다.

4. 가져온 데이터를 넣을 Table 을 SQL에 만들고 그안에 3번 자료를 넣는다(임포트).

  • 스키마 선언 및 데이터 임포트

5. 데이터가 잘 들어갔는지 SQL로 확인한다.

BigQuery: Qwik Start - Command Line

도커를 이용한 SQL 사용 방법 숙달_CLI환경

  • 기본적으로 CLI에서 SQL을 사용하려면 관련된 툴을 설치해야 사용이 가능한데 구글에서는 이러한 툴을 자체 개발하여 구글 서비스인 빅쿼리를 사용할 수 있도록 한다.

  • 구글클라우드플랫폼에서는 CLI에서도 SQL을 사용할 수 있도록 bq 명령어를 지원한는데

    • bq is a python-based, command-line tool for BigQuery

      bq는 파이썬기반의 구글빅쿼리를 사용할 수 있는 CLI 툴이다.

1. 현재 가지고 있는 Dataset(데이터베이스)을 확인한다.

  • 확인 명령어 (지금 로그인한 아이디의 프로젝트 아이디가 가진 데이터베이스를 확인한다.)

    1
    1
    bq ls
    
  • 별도로 프로젝트 아이디를 입력해야 그 프로젝트가 가지고 있는 데이터셋을 확인 할 수 있다.

    프로젝트 아이디 -> bigquery-public-data

    1
    bq bigquery-public-data:
    

2. Dataset 생성

  • 생성 명령어

    1
    bq mk
    
  • 데이터베이스 이름을 start 라고 했을때

    1
    bq mk start
    

3. 데이터베이스에 저장할 데이터를 가지고 온다.

  • 외부에서 파일을 CLI 환경의 폴더위치에 가져오는 명령 (원래 GNU 에서 지원하는 명령 wget 사용)

    1
    wget http://www.ssa.gov/OACT/babynames/names.zip
    
  • 다운이 잘 됬는지 다음 명령어로 확인

    1
    ls
    
  • 받은 파일을 현재 폴더에 압축 해제 (폴더 위치는 상관없고 자료를 열람하기 위해 압축해제)

    1
    unzip names.zip
    

4. 가져온 데이터를 넣을 TABLE을 만들고 임포트 시킨다.

  • 명령은 다음과 같고

    1
    bq load start.names2010 yob2010.txt name:string,gender:string,count:integer
    
  • 이 명령은 다음과 같이 생각하면 된다.

    datasetID: start tableID: names2010 source: yob2010.txt schema: name:string,gender:string,count:integer

5. 만들어진 데이터셋 확인

  • 명령어

    1
    1
    bq ls
    
  • 데이터셋 이름 start

    1
    bq ls start
    

6. 만들어진 테이블의 스키마 확인

  • 명령어

    1
    bq show start.names2010
    

7. 쿼리 실행으로 테이블 내 실제 데이터 확인

  • 명령어

    1
    bq query
    
  • SQL 질의어 사용

    1
    bq query "SELECT * FROM start.names2010"
    

※ Big Query는 WebUI, BigQuery REST API, Command line tool 을 이용해서 사용할 수 있다.

※ NoSQL과 Hbase Shell 을 사용하기 위해서는 Cloud Bigtable instance 을 생성하고 사용한다.

NoSQL 사용 위한 세팅 과정

  1. 환경 변수 설정 (사용 인증을 위한 프로젝트아이디, 인스턴스 변수)
    • project = 프로젝트아이디 > ~/.cbtrc
    • instance = quickstart-instance » ~/.cbtrc
  2. cbt 명령을 reference를 찾아 보고 사용하면 된다.

Hbase Shell 사용 위한 세팅 과정

(정확한 과정은 없어서 구글에서 제공한 예시 파일을 뜯어야 알수 있을듯)

  1. 구글 클라우드 빅테이블 예제 복사

    • 깃 클론

      1
      git clone https://github.com/GoogleCloudPlatform/cloud-bigtable-examples.git
      
    • 클론 파일 위치로 이동

      1
      cd cloud-bigtable-examples/quickstart
      
    • HBase shell 실행

      1
      ./quickstart.sh
      
      • HBase 프롬프트 창에서 my-table, 칼럼 페밀리 이름은 cf1

        1
        create 'my-table', 'cf1'
        
      • 테이블 리스트 확인

        1
        list
        
      • 데이터 입력

        1
        put 'my-table', 'r1', 'cf1:c1', 'test-value'
        
      • 테이블 데이터 확인

        1
        scan 'my-table'
        
      • 테이블 삭제

        1
        2
        disable 'my-table'
        drop 'my-table'
        
  • Cloud Bigtable instance 생성

※ NoSQL 관련된 사용은 cbt 명령 이용

분석

Dataproc: Qwik Start - Console

아파치 스파크, 아파치 하둡을 지원한다.

연산 결과는 본인이 만들어 놓은 클러스터 성능에 따라 결과 시일이 달라지며 사용한 만큼 요금부과

1. Dataproc을 실행할 클러스터 생성

  • 서버의 위치와 처리할 데이터 양을 고려해서 위치와 클러스터 노드수를 신중히 설정해야 한다. (요금때문)

2. 할일(Job)을 클러스터에 분배(Submit)하고 결과를 확인한다.

Dataproc: Qwik Start - Command Line

1. Dataproc을 실행할 클러스터 생성

  • 명령어

    1
    gcloud dataproc clusters create example-cluster
    

    dataproc 서비스 안 example-cluster 이름의 클러스터를 만들어라.

2. Job(할일)을 Submit(설정)한다.

  • 명령어

    1
    2
    3
    gcloud dataproc jobs submit spark --cluster example-cluster \
      --class org.apache.spark.examples.SparkPi \
      --jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000
    

    gcloud 서비스 중 dataproc 서비스의 job을 할당하는데

    • job : spark
    • main method를 포함한 class : org.apache.spark.examples.Sparkpi
    • 실행할 코드를 포함한 jar 위치 : file:///usr/lib/spark/examples/jars/spark-examples.jar
    • 몇번 실행 할 것인가? : 1000

    ※ 구체적인 명령은 래퍼런스 확인!

    https://cloud.google.com/sdk/gcloud/reference/dataproc/jobs/submit/spark

3. 클러스터 업데이트

  • 명령어

    1
    gcloud dataproc clusters update example-cluster --num-workers 4
    

    클러스터를 업데이트 하는데 example-cluster 이름의 클러스터 워크 노드를 4개로 설정해라.

시각화

Dataprep: Qwik Start

  • Dataprep 서비스를 이용하게 되면 Trifacta 에 정보를 제공하며 사용조건을 동의해야 사용이 가능하다.

  • 데이터를 올려 놓은(올려 놓을) 스토리지 설정 하고 시작한다.

1. 데이터 셋 업로드

2. Add New Recipe를 통해 뷰 활성화

기타 사용에 필요한 정보는 구글 Dataprep 래퍼런스를 통해서 확인

머신러닝

Google Cloud Datalab: Qwik Start

  • 파이썬, SQL 파일을 이용할 수 있고

  • 구글의

    • BigQuery

    • Cloud Machine Learning Engine

    • Google Compute Engine

    • Google Cloud Storage using Python

    • SQL

    • JavaScript (for BigQuery user-defined functions)

      들을 같이 활용 할 수 있다.

1. Datalab repository 생성

  • /content/datalab/notebooks

    위치의 깃 레포지토리가 Docker container에 만들어지고 Cloud Datalab VM instance 환경안에서 실행된다.

    그래서 VM instance는 ‘Cloud Datalab VM repo’로 불린다.

  • 명령어

    1
    datalab create my-datalab
    

    my-datalab 이름으로 기본 환경 생성

    여기서 VM 지역을 선택할 수 있다. (Y를 눌러 계속 진행하면서 SSH접속 암호를 설정하면 10분안에 설정이 만들어 진다.)

2. 포트 8081로 쥬피터와 유사한 개발환경 접속

  • VM이 만들어지면 8081포트로 GCP에서 제공하는 쥬피터와 유사한 개발 환경을 오픈 할 수 있다. 사용 방법은 jupyter notebook과 거의 유사하며 특이한 것은 여기서 작성하고 저장하면 구글의 git으로 버전 관리가 된다는 것이다. 커밋과 개발 기록들을 남길 수 있으며 관련 git log를 Compute Engine의 VMinstances에서 SSH를 브라우저로 오픈해 확인 가능하다.

  • VM instances 에서 SSH 브라우저를 사용해 커밋 기록 확인 방법

  • 명령어

    1
    sudo docker ps
    

    실행결과로 나오는 정보에서

    /datalab/run.sh 와 관련된 ID를 복사

  • 명령어

    1
    docker exec -it <container-id> bash
    
    를 대신해 ID를 입력하면 그 컨테이너 아이디 주소로 bash 창 접속이 된다.
  • 쥬피터로 작성한 파일들은

    cd /content/datalab/notebooks 위치에 존재

    폴더 레벨을 저 위치로 바꾸자~!

  • 명령어

    1
    cd /content/datalab/notebooks
    
  • git commit 기록 확인

  • 명령어

    1
    git log
    

Cloud ML Engine: Qwik Start

Read more »

구글 클라우드 스피치 API 사용법 정리

Posted on 2019-02-17 | In PRODUCT

19.02.17 기준 구글 클라우드 스피치 API 사용법 정리

Google Cloud Speech API: Qwik Start

환경 : bash

API 사용을 위한 사전 준비물

  • 크롬
  • 구글 개인 GCP 계정
  • 계정에서 생성한 GCP Project ID
  • 구글 API key

API 사용 과정

  • 프로젝트 아이디 세팅 및 확인
  • 활성 계정 확인
  • 프로젝트 아이디 확인

  • Speech API request 생성
  • Speech API request 요청

준비하기

  • Google Cloud Platform 에서 우리가 사용할 명령 입력 창 Cloud shell 을 열어준다.

  • 아래 같은 창이 뜨는데 START CLOUD SHELL 클릭

  • 활성 계정 확인하기 위해 아래와 같은 코드를 입력하면 아래와 같이 확인이 가능한다.

    1
    gcloud auth list
    
    1
    2
    Credentialed accounts:
     - <myaccount>@<mydomain>.com (active)
    
    1
    2
    Credentialed accounts:
     - google1623327_student@qwiklabs.net
    
  • 프로젝트 계정 확인하기 위해 아래와 같은 코드를 입력해 아래와 같이 확인

    1
    gcloud config list project
    
    1
    2
    [core]
    project = <project_ID>
    
    1
    2
    [core]
    project = qwiklabs-gcp-44776a13dea667a6
    

1. API Key 생성하기

  • Google Cloude 에서는 curl을 사용해서 api 요청을 받는데 먼저 API Key가 필요하다.

    • Navigation menu > APIs & services > Credentials

    • 키를 발급 받기 위한 메뉴 Create credentials 찾아 클릭

    • API Key 를 찾아서 클릭

    • 여기서 만들어진 API Key를 복사해 curl 환경에서 환경변수로 사용할 수 있도록 다음 코드를 입력하고 = 옆에 붙여넣는다.

      1
      export API_KEY =
      

2. API 요청 전 작업

  • 요청에 사용할 json 파일 만들기
1
2
3
4
5
6
7
8
9
10
{
  "config": {
      "encoding":"FLAC",
      "sample_rate": 16000,
      "language_code": "en-US"
  },
  "audio": {
      "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
  }
}

요청에 사용되는 json 파일의 구성은 크게

config 와 audio 두부분으로 나뉘는데

config

  • encoding : 보낼 오디오파일 확장자 (FLAC, LINEAR16 권장) (※ 필수)

    세부 설명 참고 : https://cloud.google.com/speech/reference/rest/v1/RecognitionConfig

  • sample_rate : 보내는 오디오 Hertz (※ 필수)

  • language_code : 오디오에서 나오는 언어 (※ 선택)

audio

  • url : 오디오 파일 위치 url 주소

3. API 요청 하기

  • API Key와 함께 json 파일을 같이 보내 요청한다.

    1
    2
    curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json \
    "https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=${API_KEY}"
    

요청 내용

  • POST 요청

  • 헤더

    Content-Type : application/json

    data : request.json

  • 요청 주소

    https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=${API_KEY}

  • 요청이 성공하면 Json 응답이 다음과 같이 나온다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    {
      "results": [
        {
          "alternatives": [
            {
              "transcript": "how old is the Brooklyn Bridge",
              "confidence": 0.98267895
            }
          ]
        }
      ]
    }
    

결과에서 보여주는 값은

transcript : audio에서 나오는 언어를 인식한 결과물

confidence : 결과의 정확도가 의 수치로 제공된다.

Read more »
1 … 30 31 32
Sik

Sik

156 posts
7 categories
30 tags
RSS
© 2021 Sik
Powered by Jekyll
Theme - NexT.Muse