Tech (584) 썸네일형 리스트형 [CS] 네트워크의 OSI 7계층에 대해 알아보자 🔊 해당 포스팅은 로스카츠의 AI 머신러닝 네트워크 목차 블로그 내용을 공부하면서 배운 내용을 저만의 방식으로 재정리하고자 하는 목적 하에 작성되는 포스팅입니다. 사용되는 모든 자료는 원본 블로그의 내용을 참고하되 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 CS 지식 중 네트워크, 그 중에서도 서로 다른 컴퓨터 간에 통신할 때 사용되는 OSI 7계층에 대해 알아보고 각 계층이 어떤 역할을 수행하는지에 대해 알아보려고 한다. 네트워크, OSI 계층같은 개념이 자리잡지 않았던 시절, 서로 다른 컴퓨터 간에 통신을 한다는 것은 상상하기 힘든 일이었다고 한다. 즉, 예를 들어 같은 브랜드의 컴퓨터끼리만 통신이 가능하고 서로 다른 브랜드의 컴퓨터 간에는 통신을 할 수 없었던 시절이 있었다(상상이 안 된다.. [밑시딥] 나만의 딥러닝 프레임워크 만들기, 고차 미분 계산(1) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 3권을 개인적으로 공부하면서 배운 내용을 기록하고 해당 책을 공부하시는 다른 분들에게 조금이나마 도움이 되고자 하는 목적 하에 작성된 포스팅입니다. 포스팅 내용의 모든 근거는 책의 내용에 기반하였음을 알립니다. 저번 포스팅까지 우리가 만들어온 Dezero라는 프레임워크가 미분 계산을 자동화할 수 있어 역전파 시 미분 계산을 자연스레 할 수 있도록 만들었다. 하지만 더 어려운 작업을 자동화시켜야 해야 하는데, 그 작업이 바로 고차 미분 계산이다. 고차 미분이란, 1차 미분에서 미분을 $N$번 더 수행하는 2차 미분, 3차 미분, ... 을 의미한다. 이렇게 고차 미분을 수행해야 하는 이유는 함수를 최적화하는 것과 관련이 있다. 함수 최적화가 필요한 이유는 뭘까?.. [Git] confilct 와 결부되는 cherry-pick, rebase, revert 알아보기 해당 포스팅은 얼마 전 업로드된 이고잉님의 오픈튜토리얼스 Git 강의를 보고 개인적으로 정리하는 목적 하에 작성되는 포스팅입니다. 아래 포스팅 내용의 모든 출처는 원본 영상임을 밝힙니다. 이번 포스팅에서는 Git을 어느정도 알고 나면 더 알고싶어 지는(?) 기능들인 cherry-pick, rebase, revert 기능에 대해 알아보고 실습도 해보려고 한다. 우선 해당 기능들은 이전 포스팅에서 배운 Git 에서의 conflict를 마주하고 해결하는 방법에 대해 알고 있어야 학습이 수월하다는 점 참고해두자. 물론 여기서 배울 3가지 기능들이 무조건적으로 conflict 와 결부되는 것은 아니지만, 해당 기능들을 사용하다 보면 conflict가 자주 발생할 수 있기 때문에 conflict가 무엇인지, 또 어.. [밑시딥] 나만의 딥러닝 프레임워크 만들기, 더 복잡한 미분 자동 계산(2) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 3권을 개인적으로 공부하면서 배운 내용을 기록하고 해당 책을 공부하시는 다른 분들에게 조금이나마 도움이 되고자 하는 목적 하에 작성된 포스팅입니다. 포스팅 내용의 모든 근거는 책의 내용에 기반하였음을 알립니다. 저번 포스팅까지 해서 일직선의 계산 그래프 형태만이 아닌 더 복잡한 계산 그래프 형태도 자동미분할 수 있도록 여러가지 클래스들을 개선했었다. 하지만 직전까지 만든 코드들에 대해서도 개선사항들이 존재한다. 먼저 메모리를 절약할 수 있다는 점과 변수 사용성 개선, 연산자 오버로드 등이 있다. 그러면 이제 하나씩 개선시켜보도록 하자. 그 첫번째 내용으로는 메모리를 관리하는 것이다. 1. Python은 메모리를 어떻게 관리하고 있을까? 먼저 해당 목차에서 소개.. [CS] OS(운영체제)의 메모리 관리에 대해 파헤쳐보자 이번 포스팅은 CS 스터디를 하기 위해 진행해오고 있던 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 의 메모리 파트를 읽다가 도저히(?) 이해가 안 가서.. 개별적으로 설명이 매우 잘 된 블로그를 통해서 얻게 된 내용을 나만의 방법으로 정리해 포스팅하려고 한다. 본문 내용의 출처는 이 블로그임을 밝힌다. 1. 운영체제(OS)의 역할 본론으로 메모리 관리라는 개념에 들어가기에 앞서 우리는 운영체제 즉, OS의 역할을 먼저 짚고 넘어가야 한다. 운영체제의 역할은 다음과 같이 정의할 수 있다. CPU, 메모리, I/O 장치 등 복잡한 컴퓨터 하드웨어를 잘 몰라도 사람이 쉽게 프로그램(또는 어플리에키션)을 만들 수 있게끔 일련의 '공통' 기능을 지원한다. 그래서 운영체제의 기능을 크게 3가지로 분류하면 CPU .. [회고] 978일이라는 작은 도전의 끝을 맺으며 978일 전, 나에게 있어서 작지만 거대하다고 느껴지는 하나의 도전을 시작했다. 그리고 오늘이 되는 시점에 그 하나의 도전을 하면서 들어왔던 작은 터널을 이제야 빠져나왔다. 결론부터 말하자. 오늘 부로 나의 정규 커리어가 시작되었다. 카카오 모빌리티라는 회사에서 머신러닝 엔지니어로서의 정규 커리어 첫 발을 내딛기 시작했다. 지금의 자리까지 오는 데 힘들었던 것 같기도 하다. 가끔 고생도 한 것 같고, 무엇인가를 쟁취할 것 같다가도 인생이 내 맘 대로 되지 않아 실망한 적도 있었던 것 같다. 그 때마다 포기하지 않았던 이유는 지금의 이런 순간이 올 생각 때문에 버틴 것이 아닐까싶다. 사실 이번에 회고록을 작성하는 이유는 그동안 나름대로 열심히 준비를 하면서 내가 가장 중요하게 생각했던 가치관과 그리고 더불.. [밑시딥] 나만의 딥러닝 프레임워크 만들기, 더 복잡한 미분 자동 계산(1) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 3권을 개인적으로 공부하면서 배운 내용을 기록하고 해당 책을 공부하시는 다른 분들에게 조금이나마 도움이 되고자 하는 목적 하에 작성된 포스팅입니다. 포스팅 내용의 모든 근거는 책의 내용에 기반하였음을 알립니다. 저번 포스팅까지 걸쳐서 순수하게 Python, Numpy 만을 활용해서 미분을 자동으로 계산하는 방법에 대해 알아보고 코드로 구현까지 했다. 하지만 지금까지 배운 방법은 약간의 제약성이 존재한다. 바로 입력 또는 출력 변수가 여러개가 되는 경우에는 대응하지를 못한다. 이번 포스팅에서는 가변적인 길이의 입력, 출력 변수에도 대응이 가능하고 더 나아가 일직선 계산 그래프 형태가 아닌 분기, 결합이 추가된 복잡한 계산 그래프 형태에 대해서도 미분을 자동적으로.. [밑시딥] 나만의 딥러닝 프레임워크 만들기, 미분 자동 계산(2) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 3권을 개인적으로 공부하면서 배운 내용을 기록하고 해당 책을 공부하시는 다른 분들에게 조금이나마 도움이 되고자 하는 목적 하에 작성된 포스팅입니다. 포스팅 내용의 모든 근거는 책의 내용에 기반하였음을 알립니다. 저번 포스팅에서는 나만의 딥러닝 프레임워크를 만드는 첫 단계로서 수치 미분을 통해 미분을 자동으로 계산하는 방법에 대해 알아보았다. 하지만 앞서 배운 수치 미분이라는 방법은 계산 비용과 정확도 측면에서 단점이 존재한다. 그래서 이에 대한 대안책으로 오차역전파라는 방법이 등장한다. 오차역전파를 이용하면 미분 계산도 효율적으로 빠르게 할 수 있으며 결과값의 오차도 작아진다. 책에서는 역전파 이론에 대해서도 어느 정도 분량을 담아 기술하고 역전파 구현하는 단.. [CS] 어떤 것들이 컴퓨터 하드웨어를 구성할까? 컴퓨터 내부 구조 🔊 해당 포스팅은 CS 서적 '한 권으로 읽는 컴퓨터 구조와 프로그래밍'을 읽고 저만의 방식으로 정리, 요약하는 글임을 알립니다. 해당 내용은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 서적에 기반하였음을 알립니다. 이전 포스팅까지 비트의 특성과 이 비트를 활용하는 방법에 대해 배웠고, 또 비트를 사용하는 이유와 조합 논리, 순차 논리를 활용해서 하드웨어를 구성하는 방법에 대해서도 배워보았다. 이번 포스팅에서는 현대적으로 사용되는 컴퓨터 하드웨어가 어떤 부분으로 구성되어 있는지 알아본다. 1. 컴퓨터를 구성하는 3가지! 메모리, 입력/출력, CPU 현대적 컴퓨터는 크게 메모리, 입력/출력(I/O라고도 함), CPU(중앙처리장치) 3가지 부분으로 구성되어 있다고 할 수 있다. 이 3가지 요소들은 서로 깊.. [밑시딥] 나만의 딥러닝 프레임워크 만들기, 미분 자동 계산(1) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 3권을 개인적으로 공부하면서 배운 내용을 기록하고 해당 책을 공부하시는 다른 분들에게 조금이나마 도움이 되고자 하는 목적 하에 작성된 포스팅입니다. 포스팅 내용의 모든 근거는 책의 내용에 기반하였음을 알립니다. 최근에 밑바닥부터 시작하는 딥러닝 1,2권을 깊숙하게 공부해보면서 부끄럽지만 나의 부족한 실력을 많이 채워나갈 수 있었다. 그리고 이번에는 실력을 좀 더 발전시키기 위해 해당 책 시리즈 3권을 천천히, 최대한 깊숙하게 공부해 보기로 결심했다. 참고로 3권도 마찬가지로 시중에 공개된 딥러닝 프레임워크인 Tensorflow, Pytorch 등과 같은 라이브러리를 사용해서 공부하는 내용은 아니다. 1,2권처럼 순수하게 파이썬과 넘파이만을 활용하게 되는데, 이.. [CS] 컴퓨터는 어떻게 비트를 기억할까? 메모리와 디스크의 핵심인 순차 논리 🔊 해당 포스팅은 CS 서적 '한 권으로 읽는 컴퓨터 구조와 프로그래밍'을 읽고 저만의 방식으로 정리, 요약하는 글임을 알립니다. 해당 내용은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 서적에 기반하였음을 알립니다. 이번 포스팅에서는 조합 논리의 한계점 즉, 어떤 값을 기억할 수 없다는 점을 해결할 수 있는 순차 논리에 대해 배워보도록 하자. 글 제목처럼 순차 논리는 흔히 우리가 데이터를 저장하는 기능을 한다고 알고 있는 컴퓨터의 '메모리' 와 '디스크'의 핵심 요소이다. 순차 논리의 '순차'는 순서(Sequence) 라는 용어에서 비롯되었다. 순서라는 것은 시간적으로 어떤 값 뒤에 오는 다른 값을 의미한다. 그런데 컴퓨터는 사람처럼 '시간'이라는 요소를 태생적으로는 인지하지 못한다. 따라서 어떤 회로.. [CS] 컴퓨터는 어떤 논리로 비트를 다룰까? 전자 회로의 조합 논리 🔊 해당 포스팅은 CS 서적 '한 권으로 읽는 컴퓨터 구조와 프로그래밍'을 읽고 저만의 방식으로 정리, 요약하는 글임을 알립니다. 해당 내용은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 서적에 기반하였음을 알립니다. 저번 첫 포스팅에서 컴퓨터는 '비트'라는 일종의 언어를 사용해서 말을 한다는 것을 알아보았다. 이번 포스팅에서는 그렇다면 컴퓨터가 대체 '왜' 비트라는 언어를 사용하는지에 대해서 전자 회로 관점에서 살펴보고자 한다. 1. 디지털 컴퓨터의 사례 과거 먼 옛날에는 톱니바퀴를 사용해서 연산을 수행하는 계산기를 발명했었다. 또한 시간이 흐름에 따라 톱니바퀴를 사용하지 않는 기계식 컴퓨터로는 계산자(Slide rule)라는 것도 발명되었다. 계산자의 기본 기능은 로그 곱셈 공식을 이용해 만들었다. .. [PySpark] Spark로 Encoding 과 Scaling 을 수행해보자! 🔊 해당 포스팅은 스파크 완벽 가이드 책과 인프런의 스파크 머신러닝 완벽 가이드 강의로 공부한 후 배운 내용을 저만의 방식으로 재구성한 것임을 알립니다. 특히, 참고한 인프런 강의의 강의 자료를 그대로 사용하지 않았음을 필히 알립니다! 이번 포스팅에서는 문자열 또는 Object 타입의 값을 숫자로 '인코딩' 해주는 기법들인 레이블 인코딩(Label Encoding)과 원-핫 인코딩(One-Hot Encoding)을 스파크로 수행하는 방법에 대해서 알아보도록 하자. 그리고 실수형 형태의 값들을 스케일링 해주는 방법에 대해서도 배워보자. 1. 문자열을 인덱스(숫자)로, StringToIndexer 사이킷런에 익숙한 분들은 레이블 인코딩을 수행한다고 하면 LabelEncoder 클래스나 OrdinalEncod.. [PySpark] Spark로 교차검증, 파라미터 튜닝을 해보자! 🔊 해당 포스팅은 스파크 완벽 가이드 책과 인프런의 스파크 머신러닝 완벽 가이드 강의로 공부한 후 배운 내용을 저만의 방식으로 재구성한 것임을 알립니다. 특히, 참고한 인프런 강의의 강의 자료를 그대로 사용하지 않았음을 필히 알립니다! 이번 포스팅에서는 스파크를 활용해서 모델의 교차검증을 수행하고 모델의 하이퍼파라미터를 튜닝을 함께 수행하는 방법에 대해 알아보자. 그리고 더 나아가 교차검증과 파라미터 튜닝 과정을 저번 포스팅에서 배운 Pipeline을 활용해 수행하는 방법도 알아보도록 하자. 1. 교차검증과 파라미터 튜닝을 동시에, CrossValidator 스파크의 CrossValidator 클래스는 교차검증과 파라미터 튜닝을 동시에 수행할 수 있도록 한다. 여기서 '교차검증'이란 K-fold 교차검증.. [CS] 컴퓨터는 어떤 말을 사용할까? 컴퓨터의 언어체계 🔊 해당 포스팅은 CS 서적 '한 권으로 읽는 컴퓨터 구조와 프로그래밍'을 읽고 저만의 방식으로 정리, 요약하는 글임을 알립니다. 해당 내용은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 서적에 기반하였음을 알립니다. 이번 포스팅부터 CS(Computer Science) 지식을 습득하기 위해 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 이라는 책을 한 챕터씩 읽고 배운 내용을 리뷰, 요약하는 시리즈를 만들어보려고 한다. 수호님과 스터디를 2주에 한번씩 진행하고자 약속을 잡고 정말 오랜만에 누군가와의 스터디를 진행하기 시작했다. 최근에 한 기업의 인턴으로 짧게 근무하면서 내 자신에 대한 CS 지식의 부족함을 처절히 느꼈고 물론 당장 CS 지식을 직접적으로 사용하지 않을 수도 있지만 필자도 컴퓨터를 사용하여.. [PySpark] Spark의 Pipeline으로 분류 모델을 만들어보자! 🔊 해당 포스팅은 스파크 완벽 가이드 책과 인프런의 스파크 머신러닝 완벽 가이드 강의로 공부한 후 배운 내용을 저만의 방식으로 재구성한 것임을 알립니다. 특히, 참고한 인프런 강의의 강의 자료를 그대로 사용하지 않았음을 필히 알립니다! 이번 포스팅에서는 PySpark를 활용해서 간단한 머신러닝 분류 모델을 만들어보도록 하자. 그리고 분류 모델을 만드는 데 거치는 여러가지 과정을 하나의 파이프라인으로 만들 수 있는 PySpark의 Pipeline을 활용해보는 방법도 알아보도록 하자. 1. PySpark로 간단한 Multi-Class 분류 모델 만들기 해당 포스팅에서는 대표적인 벤치마크 데이터인 IRIS(붓꽃) 데이터를 활용한 멀티-클래스 분류 모델을 만들어보자. 우선 아래의 Scikit-learn 모듈을 .. [PySpark] Spark의 Dataframe API를 알아보자!(2) 🔊 해당 포스팅은 스파크 완벽 가이드 책과 인프런의 스파크 머신러닝 완벽 가이드 강의로 공부한 후 배운 내용을 저만의 방식으로 재구성한 것임을 알립니다. 특히, 참고한 인프런 강의의 강의 자료를 그대로 사용하지 않았음을 필히 알립니다! 저번 포스팅에 이어 PySpark의 dataframe API 사용 방법에 대해 연이어 알아보자. 1. 조건에 맞는 데이터만 추출하기 특정 조건에 맞는 데이터를 추출하기 위해 사용하는 메소드로는 filter() 메소드가 존재한다. 이 때, filter() 메소드에는 스파크 데이터프레임의 Column Type 객체를 넣어주어야 한다. 여기서 Column Type 객체란게 잘 와닿지 않을 텐데, 우리가 저번 시간에 select() 메소드를 활용해서 특정 칼럼을 추출할 때, 아래.. [PySpark] Spark의 Dataframe API를 알아보자!(1) 🔊 해당 포스팅은 스파크 완벽 가이드 책과 인프런의 스파크 머신러닝 완벽 가이드 강의로 공부한 후 배운 내용을 저만의 방식으로 재구성한 것임을 알립니다. 특히, 참고한 인프런 강의의 강의 자료를 그대로 사용하지 않았음을 필히 알립니다! 예전에 아파치 스파크에 대한 개념글과 PySpark를 활용해서 문제 유형에 맞게 간단한 머신러닝 모델을 튜토리얼 형식으로 배웠었다. 그 이후 어느 정도 시간이 지난 후, 아파치 스파크의 버전도 많이 업데이트 되었고 개인적으로 분산 시스템에 대한 역량을 키워보고자 책과 강의를 통해 PySpark를 다시 배우고 있다. 필자는 PySpark를 활용하는 목적이 대량의 데이터를 전처리하고 머신러닝 모델을 개발하는 방법을 배워보는 것임을 알린다. 그래서 이번 첫 포스팅에서 알아볼 P.. [밑시딥] Transformer 동작과정을 밑바닥부터 뜯어보자! 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권 책에 나오진 않지만 책의 개념을 기반해 작성함을 알립니다. 또한 Transformer의 동작과정을 자세하게 이해하는 데 큰 참조 자료가 된 원본 블로그 출처는 여기임을 알립니다. - 아래 그림 자료에서 '아다마르 곱'을 사용해도 된다고 나와있지만 오타임을 알립니다! 행렬 내적(Matmul 또는 dot)을 수행해주어야 합니다! 저번 포스팅에서는 Transformer 라는 모델이 등장하게 된 이유과 모델의 큰 구조를 그림으로 살펴면서 각 구성요소가 어떠한 역할을 했는지도 알아보았다. 아쉬웠던 점은 트랜스포머라는 모델이 $key, query, value$라는 것을 입력으로 받는다고 했는데, 구체적으로 이 입력들이 무엇을 의미하는지, 그리고 트.. [밑시딥] RNN의 역할도 어텐션으로 대체한 seq2seq 모델, Transformer 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권의 교재 내용의 마지막 챕터인 Transformer에 대해 간단히 소개하는 개념과 더불어 Transformer 논문인 "Attention Is All You Need"를 읽고 개인적으로 요약 및 정리한 글임을 알립니다. 본격 내용에 들어가기에 앞서 앞으로 Transformer(트랜스포머)에 대한 내용을 2개의 포스팅으로 나누어 게시하려고 한다. 첫 번째인 이번 포스팅에서는 트랜스포머 모델 논문에 기반하여 트랜스포머 모델이 나오게 된 이유를 알아보고 개괄적인 모델 구조를 그림으로 살펴보면서 어떤 기법이 들어가있는지에 대해 집중적으로 다룬다. 그리고 다음 포스팅에서는 트랜스포머 모델의 '진짜' 구조를 그야말로 밑바닥부터 파헤쳐보도록 하자. 1. 거추장스러운 R.. 이전 1 2 3 4 5 6 7 8 ··· 30 다음