머신러닝이란?

  • 결정 = 비교 + 선택
  • 물건을 살때 제품의 속성이 몇백개, 종류가 몇백개일떈 어떻게 비교하고 선택하지...?
  • 숫자 -> 통계 -> 컴퓨터 를 통해 비교를 쉽게 해줬다
  • 이제는 결정까지 기계에게 맡긴 것 -> 머신러닝!
  • 나의 두뇌를 더욱 두뇌답게 만들어주는 머신러닝!

습관

  • 손톱깨물기를 고쳐보고 싶어요
  • 습관은 의지를 이기고, 의지는 환경을 이기고, 환경은 습관을 이긴다
    • 의지만으로 습관을 바꾸겠다는 건 무모해
    • 대신 의지로 환경을 조정해서 환경이 습관을 이기도록 해보자!
  • 누가 내가 손톱을 깨물때마다 알려주면 좋겠어

단계

  • 내가 손톱꺠무는 장면을 폰을 보고 폰이 모라해줬으면 조케따
  • 손톱깨무는 사진 vs 깨물지않는 사진
  • 학습 ㄱㄱ
  • 잘될거같은데? 앱스토어에 올렸다 대박나는거아냐?? 나부자되면 오또캐..?

궁리하는 습관

  • 머신러닝 사용자가 되어 우선 머신러닝을 가까이~
  • 꿈이 있는 사람이 몽상가가 아니라 혁명가가 될 수 있어요

Teachable Machine

<div>Teachable Machine Image Model</div>
<button type="button" onclick="init()">Start</button>
<div id="webcam-container"></div>
<div id="label-container"></div>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.3.1/dist/tf.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@teachablemachine/image@0.8/dist/teachablemachine-image.min.js"></script>
<script type="text/javascript">
    // More API functions here:
    // https://github.com/googlecreativelab/teachablemachine-community/tree/master/libraries/image

    // the link to your model provided by Teachable Machine export panel
    const URL = "./my_model/";

    let model, webcam, labelContainer, maxPredictions;

    // Load the image model and setup the webcam
    async function init() {
        const modelURL = URL + "model.json";
        const metadataURL = URL + "metadata.json";

        // load the model and metadata
        // Refer to tmImage.loadFromFiles() in the API to support files from a file picker
        // or files from your local hard drive
        // Note: the pose library adds "tmImage" object to your window (window.tmImage)
        model = await tmImage.load(modelURL, metadataURL);
        maxPredictions = model.getTotalClasses();

        // Convenience function to setup a webcam
        const flip = true; // whether to flip the webcam
        webcam = new tmImage.Webcam(200, 200, flip); // width, height, flip
        await webcam.setup(); // request access to the webcam
        await webcam.play();
        window.requestAnimationFrame(loop);

        // append elements to the DOM
        document.getElementById("webcam-container").appendChild(webcam.canvas);
        labelContainer = document.getElementById("label-container");
        for (let i = 0; i < maxPredictions; i++) { // and class labels
            labelContainer.appendChild(document.createElement("div"));
        }
    }

    async function loop() {
        webcam.update(); // update the webcam frame
        await predict();
        window.requestAnimationFrame(loop);
    }

    // run the webcam image through the image model
    async function predict() {
        // predict can take in an image, video or canvas html element
        const prediction = await model.predict(webcam.canvas);
        for (let i = 0; i < maxPredictions; i++) {
            const classPrediction =
                prediction[i].className + ": " + prediction[i].probability.toFixed(2);
            labelContainer.childNodes[i].innerHTML = classPrediction;
        }
    }
</script>

그 손 당장 내려놔!

애플리케이션 vs 프로그램

  • 애플리케이션 : 부품을 응용!해서 만든 것
    • 머신러닝 애플리케이션 : 티처블머신(부품)을 응용해서 만든 소프트웨어
  • 프로그램
    • 부품을 시간의 순서에 따라 실행되도록 결합한 것
    • 시간, 순서! 기계가 해야할 일을 기계에게 알아들을 수 있는 방식으로 순서대로 적는 것

모르면 마법, 알면 기술

  • 카페 체인 100개가 있는 사장님: 레모네이드에 들어갈 레몬의 양 궁금해
  • 온도와 판매량의 기록이 고, 내일의 온도를 알고 있다면 판매량을 예측할 수 있겠죠?
  • 그치만 온도 말고도 판매량에 영향을 끼치는 건 많을 거야

상상

기술적 한계는 신경쓰지 말기

  • 환경
    • 날이 너무 더워 하지만 학원에도 집에도 에어컨이 있지! 에어컨을 틀면 시원하고 뽀송뽀송해서 기분이 좋아져~~
  • 불만족
    • 그치만 유리같은 내 몸은 까딱하면 냉방병이나 감기에 걸리기가 너무 쉬워
    • 한번 냉방병에 걸리면 쉽게 잘 낫지도 않고 ,, 더군나나 아프면 슬퍼서 더 아프단말여
    • 다른 사람들도 있는데 에어컨을 안 틀수도 없는데,, (그리고 안 트는건 나도 싫구)
    • 옷을 어느정도로 껴입어야 할지도 모르겠어 아침마다 맨투맨 셔츠 챙기는 거솓 귀차나!!!!
    • 에어컨 온도, 내가 가진 옷가지들의 보온력, 일반 사람들이 시원하다고 느끼는 온도 등등에 따라서 '냉방병에 안 걸리지만 시원할 정도의 코디'를 알려주는 기계가 있다면 아침마다 편하지 않을까??
  • 다른 사람들의 의견

독립변수와 종속변수

  • 변수 variable
  • 표를 만났을때, "서로 상관있는 특성은 무엇이지?

독립변수: 원인

  • 레모네이드 카페: 바깥 온도
  • 냉방병 애플리케이션
    • 실외온도
    • 실내온도
    • 일반인들의 선호온도
    • 옷의 보온력

종속변수: 결과

  • 레모네이드 카페: 판매량
  • 냉방병 애플리케이션
    • 옷차림

기계학습 Machine Learning

지도학습 Supervised Learning

  • 지도: 기계를 가르친다
  • 문제를 풀다보면 실력이 늘어서 잘 푸게 되는 것처럼 문제를 풀게 가르치는거
  • 정답을 알려주는 답지가 있음
  • 지도학습 ≒ 역사
    • 역사: 과거에 있던 사건이 원인과 결과로 이루어져있음
    • 지도학습: 과거의 데이터로 미래의 결과를 예측
  • 레모네이드
    • 지도학습을 이용하면 독립변수, 종속변수가 주어지면 분석 후 모델을 알아서 만들어줌
      • 모델: 온도 * 2 = 판매량
  • 새벽배송 쇼핑몰 2000만명, 어떻게 판매량 예측?

분류 Classification

  • 손톱 애플리케이션
    • 독립변수: 사진
    • 종속변수: 손톱/정상
  • "가지고 있는 데이터에 독립변수종속변수가 있고, 종속변수이름일 때 분류를 이용하면 됩니다"

사례

회귀 Regression

  • 예측하고 싶은 종속변수가 '숫자'일 때 ex)레모네이드 예제
  • "가지고 있는 데이터에 독립변수종속변수가 있고, 종속변수숫자일 때 회귀를 이용하면 됩니다"

사례

비지도학습 Unsupervised Learning

  • 기계에게 데이터에 대한 통찰력을 부여하는 것
    • 통찰: 예리한 관찰력으로 사물을 꿰뚫어봄
    • 누가 정답을 알려준 것도 아닌데 관찰을 통해 새로운 의미나 관계를 발견해내는 것
  • 탐험!
    • 나는 누구인가,, 나의 특성,, 나의 성격... 비슷한 데이터를 그룹핑
  • 독립변수, 종속변수 구별 중요 x

군집화 Clustering

  • 비슷한 것들을 찾아서 그룹을 만드는 것
    • 분류: 어떤 대상이 어떤 그룹에 속하는지 판단하는 것
  • 이름,위도,경도 만 있는 표를 좌표평면에 옮기면 군집화하기 쉽다 -> 그 묶음을 표에 새로운 열로 표현하면 됨 -> 하지만 위도,경도 말고도 수많은 열이 있다면?? ,행의 값이 계속해서 추가,수정된다면??
  • 1000만 관측치 여기있어 + 100개 클러스터 필요해 --> 군집화 --> 군집으로 묶인 새로운 100개의 클러스터를 돌려줌
  • 관측치를 그룹핑 해주는것

변환 Transform

연관 Association

  • 연관 규칙 학습: Association Rule Leanring, 장바구니 학습
    • 온라인쇼핑몰의 사장님, 더많은상품을 판매하기 위해 고민,
    • 고객 장바구니에 담긴 것을 통해 인사이트를 얻고싶어
    • 라면사는 사람은 계란을 사고, 식빵사는사람은 우유를 사네?
    • 쇼핑추천, 검색어추천, 동영상추천==추천
  • 특성을 그룹핑해주는 것이 연관규칙
    -

강화학습 Reinforcement Learning

  • 학습을 통해 실력이 느는게 지도학습이랑 비슷하지만 강화학습은 답지 없이 풀라고 하는거
  • 더 좋은 보상을 받기위해 수련하는 것
  • 일단 해보면서 경험을 통해 실력을 키워나가는 것
  • 상 + 벌 !

데이터

양적 데이터

  • 얼마나 큰지, 얼마나 많은지, 어느정도인지
  • 양적(量的, Quantitative) ==> 숫자 -> 회귀

범주형 데이터

  • 이름
  • 범주(範疇, Categorical) ==> 이름 -> 분류

나에게 필요한 머신러닝을 찾아내는 방법

나도 이제 머신러닝 엔지니어!

profile
갈 길이 멀다

0개의 댓글