분류 전체보기

    객체지향 프로그래밍

    면접에서 가장 기본적인 질문 중에 하나, "객체지향 프로그래밍이 뭔가요?". 정말 기본 중의 기본이지만, 막상 대답하고자 하니 말문이 막혔다. 꼬리에 꼬리를 무는 질문들이 쏟아져 나오는 질문이니 만큼, 제대로 알아둘 필요가 있는 주제인 것 같다. 이번 기회에 한번 확실하게 짚고 넘어가도록 하자. 객체지향 프로그래밍 (Object Oriented Programming) 객체지향 프로그래밍이란? 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 이를 활용하여 프로그래밍하는 것을 의미한다. 기존의 프로그램이 순차적으로 동작하는 것과는 다르게 객체들 간의 유기적인 상호작용을 통해서 프로그램이 동작하는 것이 특징이다. 대표적인 객체지향 프로그래밍 언어로는 Java가 있고 대표적인 절차적 프로그래밍 언어로는 ..

    Inductive Bias란 무엇일까?

    머신러닝에서 Bias는 무슨 의미일까? Inductive Bias라는 용어에서, Bias라는 용어는 무엇을 의미할까? 딥러닝을 공부하다 보면, Bias과 Variance를 한 번쯤은 들어봤을 것이다. Bias는 타겟과 예측값이 얼마나 멀리 떨어져 있는가, 그리고 Variance는 예측값들이 얼마나 퍼져있는가를 의미한다. 따라서 Bias가 높은 경우 데이터로부터 타겟과의 연관성을 잘 찾아내지 못하는 과소적합(Underfitting) 문제가 발생하고, Variance가 높은 경우에는 데이터의 사소한 노이즈나 랜덤한 부분까지 민감하게 고려하는 과적합(Overfitting) 문제가 발생한다. 여기서, Bias를 학습 알고리즘의 잘못된 가정에 의하여 발생하는 오차라고도 하는데, 잘못된 가정에 의하여 데이터에서 중..

    딥러닝의 핵심, 역전파

    역전파(Back Propagation)란 무엇일까? 역전파의 의미 우선 역전파의 정의에 대해서 알아보자. 역전파는 신경망의 각 노드가 가지고 있는 가중치(Weight)와 편향(Bias)을 학습시키기 위한 알고리즘으로, 딥러닝에 있어서 가장 핵심적인 부분이라고 할 수 있다. 목표(Target)와 모델의 예측 결과(Output)가 얼마나 차이가 나는지 확인하고 그 오차를 바탕으로 가중치와 편향을 뒤에서부터 앞으로 갱신해가는 것을 의미한다. 역전파란 명칭도 바로 이처럼 뒤에서부터 다시 앞으로 거슬러 올라간다는 것에서 나온 것이다. 비결이 뭐야? 역전파가 딥러닝에 있어서 중요하다는 점은 알겠다. 도대체 어떤 방법으로 학습을 진행하고 또 가중치를 갱신하기 위해 어떤 방법으로 이 복잡한 신경망을 계산할 수 있는 것..

    [자료구조] 대표적인 자료구조 정리

    면접을 보면서 느꼈던 점은 자료구조와 알고리즘은 기본적인 것이라고 생각하는데, 막상 대답하고자 하면 명확하지 않았던 경우가 많았던 것 같다. 이번 기회에 확실히 공부해서 기초를 단단히 해서 보다 논리적으로 문제를 해결하고 싶다. 저번 글에서 자료구조에 대한 전반적인 내용을 다뤘다면, 이번에는 대표적인 자료구조들을 살펴보고 각각의 장단점과 특징을 비교해보자. 배열 (Array) 배열은 가장 기본적인 데이터 구조다. 배열은 인덱스(Index)와 인덱스에 해당하는 요소(Element)로 구성된다. 특징 길이가 고정되어 생성된다. (정적 메모리 할당) Random Access를 지원한다. 즉, 인덱스를 통해서 각 요소에 직접 접근할 수 있는 특징이 있다. 배열은 논리적 순서와 물리적 순서가 일치한다. 인접한 메..

    [자료구조] 자료구조? 왜 그렇게 중요할까

    자료구조란? 자료구조를 왜 알아둬야 할까? 자료구조는 컴퓨터과학에서 알고리즘과 함께 가장 중요한 기초이론이다. 왜 중요할까? 정의를 한번 살펴보면, 자료구조란 데이터에 편리하게 접근하고, 변경하기 위해서 데이터를 저장하거나 조직하는 방법을 말한다. 다시 말해서, 데이터를 얼마나 효율적으로 저장 관리하고 메모리를 절약하거나 실행시간을 단축시키는 등에 목적을 두고 있다는 것이다. 자료구조의 특징 작업의 효율성, 추상화, 재사용성을 증가시키기 위하여 상황에 따른 적절한 자료구조를 선택할 필요가 있다. 대규모 데이터를 관리 및 활용하는 경우에는 특히 더 중요하다고 볼 수 있다. (1) 효율성 : 상황에 맞는 자료구조를 사용하면 데이터 처리의 효율성이 높아진다. 예를 들어, 사람의 이름과 전화번호 쌍의 데이터가 ..

    모델의 평가지표란?

    머신러닝 모델을 학습할 때, 모델의 성능을 평가하는 방법은 무엇이 있을까? 데이터 준비와 모델 학습과 더불어 모델 성능을 측정하는 것 또한 머신러닝의 핵심 단계라고 할 수 있다. 그렇다면, 머신러닝 모델의 평가지표(Evaluation Metric)에는 무엇이 있는지 한번 살펴보자. 평가지표란? 모델의 학습은 어떻게 평가할 수 있을까? 정확도만 가지고 측정이 가능할까? 정확도로만 학습을 진행한다면, 모델은 실제 사용 환경에서 처음 만나는 데이터에 대해 약한 모습을 보일 가능성이 크다. 학습의 목적에 따라서 그에 맞는 적절한 평가지표를 사용해야 올바른 성능평가를 진행할 수 있다. 앞으로 올바른 성능평가를 할 수 있도록 대표적인 평가지표들은 무엇이 있는지 살표보고 비교해보자. 모델 정확도 (Model Accu..

    데이터가 충분하다고 말하려면 얼마나 있어야 할까?

    정답은? 더보기 아무도 모른다! 왜 그럴까? 프로젝트에서 다루는 문제의 복잡성은 정말 다양하다. 개와 고양이를 구분하는 비교적 간단한 분류 문제부터 조직 슬라이드에서 특정 림프구를 구분하는 비교적 복잡한 문제도 있다. 그럼 이 두 문제를 학습하기 위한 충분한 데이터의 양은 동일할까? 정확히는 모르지만 아마도 대부분의 사람들이 직감적으로 다를 것이라 생각할 것이다. 그래서 얼마나 필요한데? 문제의 복잡성과 사용하는 모델의 따라서 충분하다고 말할 수 있는 데이터의 양은 다르다고 말할 수 있다. 하지만 얼마나 필요한가? 대답하기는 어렵지만, 이 정도로 생각해 볼 수는 있을 것 같다. 상황에 따라 다르다 정해진 답은 없으며, 경험에 따라서 답을 찾아갈 뿐이다. 앞서 언급했듯, 문제의 복잡성이나 학습 알고리즘의 ..

    올바른 손 씻기 교육을 위한 손 씻기 단계 인식 모델

    Project Overview Purpose 실시간 영상에서 손 씻기 단계를 판별하고 정부 권장 손 씻기 6단계 지침을 수행할 수 있게 도와주는 서비스 기존의 rule-based 방식으로는 변수를 고려하기 어려운 문제(피부색, 촬영 환경, 개인마다 다른 손 모양 등)가 있어 다양한 데이터를 통해 학습된 딥러닝 모델로 문제 해결 아동 손 씻기 교육을 위한 스마트폰 애플리케이션이나 음식점, 병원, 공공장소 등에서 사용될 수 있는 손 씻기 검수 애플리케이션 등 다양한 분야에서 사용될 수 있음 Model Real Time Object Detection with YOLOv5 Model mAP50 YOLOv5s Batch Size 144 0.715 + Brightness Aug ↑ 0.7457 + Mosaic, M..